【问题标题】:Using a dialog preference with custom layout使用带有自定义布局的对话框首选项
【发布时间】:2014-02-15 01:37:55
【问题描述】:

我有一个自定义布局,我正在使用对话框首选项,并且布局在对话框中看起来很好,但问题是我在布局中有复选框,并且检查它们不会使它们按预期运行。下面是我的 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)
{...}

方法并导致相同的结果。在该文件的哪种方法中,将在选中复选框时执行代码的正确位置?

【问题讨论】:

    标签: java android checkbox dialog-preference


    【解决方案1】:

    您应该覆盖 onCreateDialogView 并将您的 onCheckChangeListeners 放在那里。问题是目前他们只在调用 onDialogClosed 时才监听,这是在您尝试检查它们之后。

    【讨论】:

    • 这会更有意义,我尝试这样做,但它仍然产生了与我之前经历相同的结果,这不是预期的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多