0

ダイアログ設定で使用しているカスタム レイアウトがあり、そのレイアウトはダイアログ ボックスに正しく表示されますが、問題は、レイアウトにチェック ボックスがあり、それらをチェックしても期待どおりに動作しないことです。以下は私の 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.
}

アプリの実行中にログを開いているときに、最初または 2 番目のチェックを選択しようとすると、常にログ ステートメントによって値 0 が出力され、選択した変数が期待どおりに更新されていないことが示されます。チェックボックスのコードを

public DialogPreferences(Context oContext, AttributeSet attrs)
{...}

メソッドとそれが同じ結果につながりました。チェックボックスがオンになっているときに何かを実行するために必要なコードを配置するのに適切な場所は、このファイルのどのメソッドですか?

4

1 に答える 1