【发布时间】:2013-03-22 11:36:41
【问题描述】:
我有一个 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);
...
}
我没有设置RetainInstance,所以默认为false。
在该对话框中,我有几个复选框,我希望在调用此对话框之间记住它们的状态。我没有在对话框上放置任何按钮,我依靠用户单击对话框外部来关闭它。
当屏幕方向改变时,一切正常;对话框以另一个方向重新创建,并保留用户的选择。这似乎是自动发生的,因为调用了 onSaveInstanceState 方法。
我希望在关闭对话框时受益于同样的魔力,并且我注意到当用户在对话框外单击时不会调用 onSaveInstanceState。
我的直觉是从 onDismiss 中强制调用 onSaveInstanceState(对话框关闭时会调用它)。但是 onSaveInstanceState 需要一个 Bundle 作为参数,我找不到可以传递给它的合理的东西。我试过调用 getArguments() 但这会返回 null。
那么有没有一个我可以传递给 onSaveInstanceState() 的论点,它会给我带来与改变方向相同的魔力? 我也愿意使用其他简单的方法来保存通话之间的对话状态。
谢谢
【问题讨论】:
标签: android user-interface dialog persistence