我有CustomDialog一个扩展DialogFragment. 我覆盖onCreateDialog方法的类,以获得我想要的自定义对话框.
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
dialog = new Dialog(activity, styleId);
view = activity.getLayoutInflater().inflate(layoutId, null);
dialog.setContentView(view);
if (listener != null) {
listener.onViewInit(view, this);
}
return dialog;
}
Run Code Online (Sandbox Code Playgroud)
这是自定义对话框创建代码.在视图膨胀之后,我调用listener.onViewInit(view, this) 类型的侦听器方法,OnViewInitListener它是接口并扩展Serializable,将自定义代码绑定到视图(查看文本,侦听器等),以便在旋转时我想丢失我的按钮按逻辑.
@Override
public void onSaveInstanceState(Bundle bundle) {
bundle.putInt("layoutId", layoutId);
bundle.putInt("styleId", styleId);
bundle.putSerializable("listener", listener);
super.onSaveInstanceState(bundle);
}
public RsCustomDialog setOnListenerAssignment(OnViewInitListener listener) {
this.listener = listener;
return this;
}
Run Code Online (Sandbox Code Playgroud)
当我OnViewInitListener从Activity 实现时,在方向更改时,事情按预期工作:
onCreateDialog每次重新创建片段时都会调用,并且没有包裹错误,但是当我按下应用程序历史记录按钮时(在最右边)

我收到此错误:
10-09 11:09:38.256: E/AndroidRuntime(24153): FATAL EXCEPTION: main
10-09 11:09:38.256: …Run Code Online (Sandbox Code Playgroud)