小编Gio*_*ili的帖子

Android监听器序列化

我有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每次重新创建片段时都会调用,并且没有包裹错误,但是当我按下应用程序历史记录按钮时(在最右边) android按钮

我收到此错误:

10-09 11:09:38.256: E/AndroidRuntime(24153): FATAL EXCEPTION: main
10-09 11:09:38.256: …
Run Code Online (Sandbox Code Playgroud)

android dialog fragment parcel

4
推荐指数
2
解决办法
4687
查看次数

标签 统计

android ×1

dialog ×1

fragment ×1

parcel ×1