Checkbox在Android上的Dialog启动时取消选中

时间:2013-06-20 13:38:56

标签: android checkbox

我在自定义对话框中创建了一个复选框。 onClick函数似乎工作正常但如果我关闭对话框并重新打开,则框会恢复为未选中状态。我假设某些东西正在刷新并且不记得复选框的状态。如何保存支票?

这是我的对话框:

public Dialog onCreateDialog() {
     AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);

     LayoutInflater inflater = getLayoutInflater();
     View layout = inflater.inflate(R.layout.popuplayout, null);
     helpBuilder.setView(layout);

     helpBuilder.setPositiveButton(
       "OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // Close the dialog
            }
        });
        AlertDialog helpDialog = helpBuilder.create();
        helpDialog.show();
        return helpBuilder.create();

}

复选框方法:

public void onCheckboxClicked(View view){
    boolean checked = ((CheckBox) view).isChecked();
    switch(view.getId()) {
        case R.id.check_devices:
            if(checked)
                abc();
            break;
    }
}

2 个答案:

答案 0 :(得分:1)

创建对话框时,您仍需要将CheckBox设置为选中。

修改

您可以覆盖onPrepareDialog,在其中可以搜索CheckBox(通过findViewById(R.id.yourCheckBox)),然后在其上调用setChecked(boolean value)

@Override
public void onPrepareDialog(int id, Dialog dialog){
    CheckBox cb = (CheckBox)findViewById(R.id.yourCheckBox);
    cb.setChecked(valueToSet); // Could be a global variable, or always true if that is what you need.

    super.onPrepareDialog(id, dialog);
}

请记住,这是一种不推荐使用的方法,但它会传达消息(我希望)。

答案 1 :(得分:0)

您可以使用SharedPreferencesCheckbox保存为是否已选中。然后,您可以在打开Dialog时检查此偏好设置,并使用setChecked()方法相应地选中此框。

这将永久保存Checkbox的值,因为我猜这是你想要保存的东西,即使你离开应用程序也是如此。

SharedPreferences Docs

我发布的第一个链接有一个很好的例子,说明如何开始使用它。选中/取消选中Checkbox后,您将保存首选项,然后在每次打开Dialog时读取首选项