Использование настроек диалога с пользовательским макетом
У меня есть пользовательский макет, который я использую с настройками диалогового окна, и макет хорошо отображается в диалоговом окне, но проблема в том, что у меня есть флажки в макете, и проверка их не заставляет их вести себя как ожидалось. Ниже приведен код моего класса DialogPreferences.java:
@Override
protected void onDialogClosed(boolean positiveResult) {
LayoutInflater inflater = ((Activity)getContext()).getLayoutInflater();
View view = inflater.inflate(R.layout.imagechoice, null);
button1 = (CheckBox)view.findViewById(R.id.background1);
button2 = (CheckBox)view.findViewById(R.id.background2);
button3 = (CheckBox)view.findViewById(R.id.background3);
button4 = (CheckBox)view.findViewById(R.id.background4);
button1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
selected=1;
button2.setChecked(false);
button3.setChecked(false);
button4.setChecked(false);
}
});
button2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
selected=2;
button1.setChecked(false);
button3.setChecked(false);
button4.setChecked(false);
}
});
if(positiveResult){
Log.d("BACKGROUND onDialogClosed", Integer.toString(selected));
persistInt(selected);
}
super.onDialogClosed(positiveResult); //To change body of overridden methods use File | Settings | File Templates.
}
Когда приложение работает, и у меня открыт журнал, я попытался выбрать первую или вторую проверку, и я всегда вижу значение 0, напечатанное оператором журнала, указывающее, что выбранная переменная никогда не обновляется должным образом. Я попытался поставить код флажка в
public DialogPreferences(Context oContext, AttributeSet attrs)
{...}
метод и это привело к тем же результатам. В каком методе этого файла правильное место для размещения кода, необходимого для выполнения каких-либо действий, когда флажки установлены?
1 ответ
Вы должны переопределить onCreateDialogView и поместить туда свои onCheckChangeListeners. Проблема в том, что они слушают только когда вызывается onDialogClosed, то есть после того, как вы пытаетесь проверить их.