我有一个 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() 的论点,它会给我带来与改变方向相同的魔力?我也愿意接受其他简单的方法来保留通话之间的对话状态。
谢谢