获取AlertDialog以保存其复选框状态

时间:2013-03-22 11:36:41

标签: android user-interface dialog persistence

我有一个DialogFragment(android.support.v4.app.DialogFragment),我将其实例化:

public Dialog onCreateDialog(Bundle savedInstanceState) {
  ...
  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  LayoutInflater inflater = getActivity().getLayoutInflater();  
  View v = inflater.inflate(R.layout.selector, null);
  builder.setView(v);
  ...
}

我没有setRetainInstance所以默认情况下它是假的。

在该对话框中,我有一些复选框,我希望在调用此对话框之间记住它们的状态。我没有在对话框上放置任何按钮,我依靠用户在对话框外单击以关闭它。

当屏幕方向改变时,一切正常;在另一个方向重新创建对话框,并保留用户的选择。这似乎是自动发生的,因为调用了onSaveInstanceState方法。

当我的对话框关闭时,我想从同样的魔法中受益,并且我注意到当用户在对话框外单击时不会调用onSaveInstanceState。

我的直觉是强制从onDismiss中调用onSaveInstanceState(当对话框关闭时会调用它)。但onSaveInstanceState需要一个Bundle作为参数,我找不到合理的东西传递给它。我试过调用getArguments()但是返回null。

那么有没有我可以传递给onSaveInstanceState()的论据,这会给我带来与定向变化相同的魔力? 我也愿意采用其他简单的方法来保持我的对话之间的对话状态。

由于

1 个答案:

答案 0 :(得分:1)

我不知道abt OnSaveInstanceState但是你可以为每个复选框创建Boolean个变量,并且在每个复选框的OnCheckedChangeListener中你可以在这些布尔变量中保存复选框的状态。< / p>

OR

你也可以使用SharedPreferences来存储你的复选框状态

并且要访问我们必须使用

内部警告对话框中的复选框
CheckBox cbox = (CheckBox) view.findViewById(R.id._cbox);
                           ^^^^^
希望它有所帮助...