我在自定义对话框中创建了一个复选框。 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;
}
}
答案 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)
您可以使用SharedPreferences将Checkbox
保存为是否已选中。然后,您可以在打开Dialog
时检查此偏好设置,并使用setChecked()
方法相应地选中此框。
这将永久保存Checkbox
的值,因为我猜这是你想要保存的东西,即使你离开应用程序也是如此。
我发布的第一个链接有一个很好的例子,说明如何开始使用它。选中/取消选中Checkbox
后,您将保存首选项,然后在每次打开Dialog
时读取首选项