1

I have a checkbox in a custom dialog I've created. The onClick function seems to work fine but the box reverts to unchecked if I close the dialog and re-open. I'm assuming something is getting refreshed and not remembering the state of the checkbox. How do I get it to preserve the check?

Here's my dialog:

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();

}

Checkbox method:

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

2 回答 2

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);
}

请记住,这是一种已弃用的方法,但它传达了信息(我希望如此)。

于 2013-06-20T13:40:14.427 回答
0

您可以使用SharedPreferences将其保存Checkbox为选中或不选中。然后,您可以在打开时检查此首选项,Dialog并使用该setChecked()方法相应地选中该框。

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

SharedPreferences 文档

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

于 2013-06-20T13:58:35.377 回答