我有一个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()的论据,这会给我带来与定向变化相同的魔力? 我也愿意采用其他简单的方法来保持我的对话之间的对话状态。
由于
答案 0 :(得分:1)
我不知道abt OnSaveInstanceState
但是你可以为每个复选框创建Boolean
个变量,并且在每个复选框的OnCheckedChangeListener
中你可以在这些布尔变量中保存复选框的状态。< / p>
OR
你也可以使用SharedPreferences
来存储你的复选框状态
并且要访问我们必须使用
内部警告对话框中的复选框CheckBox cbox = (CheckBox) view.findViewById(R.id._cbox);
^^^^^
希望它有所帮助...