Android DialogFragment BadParcelableException

Android DialogFragment BadParcelableException,android,android-dialogfragment,Android,Android Dialogfragment,我试着写一个小例子来重现我的问题: public class ActivityA extends FragmentActivity{ private void showMyDialog(){ SelectionDialog dialog = SelectionDialog.newInstance("title", new SelectionDialog.UploadFolderSelectionDialogListener() { @Overrid

我试着写一个小例子来重现我的问题:

public class ActivityA extends FragmentActivity{

  private void showMyDialog(){
    SelectionDialog dialog = SelectionDialog.newInstance("title", new SelectionDialog.UploadFolderSelectionDialogListener() {

                @Override
                public void writeToParcel(Parcel arg0, int arg1) {
                    // TODO Auto-generated method stub

                }

                @Override
                public int describeContents() {
                    // TODO Auto-generated method stub
                    return 0;
                }

                @Override
                public void folderSelected() {
                    // TODO Auto-generated method stub

                }
            });
    dialog.show(getSupportFragmentManager());
  }
}

public class SelectionDialog extends DialogFragment {

  public static SelectionDialog newInstance(final String title, UploadFolderSelectionDialogListener listener) {
    SelectionDialog  dialog = new SelectionDialog ();
    Bundle args = new Bundle();
    args.putString("title", title);
    args.putParcelable("listener", listener);
    dialog.setArguments(args);
    return dialog;
  }

  @Override
  public Dialog onCreateDialog(final Bundle savedInstanceState) {
    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity());
    if (getArguments().containsKey("title")) {
        alertBuilder.setTitle(getArguments().getInt("title"));
    }
    return alertBuilder.create();
  }

  public interface UploadFolderSelectionDialogListener extends Parcelable {
    void folderSelected();
  }
}
问题是:

  • 确保选中开发人员选项“不保留活动”
  • 打开对话框
  • 按主页按钮
  • 从主启动器打开应用程序
  • 正在调用getArguments()。获取。。。导致异常:
  • “android.os.BadParcelableException:Parcelable协议需要一个名为Creator的Parcelable.Creator对象,该对象位于com类上….$1”

    以下内容也没有解决此问题:getArguments().setClassLoader(getClass().getClassLoader())


    删除
    args.putParcelable(“侦听器”,侦听器)避免了崩溃。

    您能否发布
    com.sophos.smenc.LocalStorageProvider
    类及其内部类问题在于
    LocalStorageProvider
    未正确遵循可打包协议。您的简短示例不存在使用<代码> LoalSturgProvices < /COD>,因此不适合重现您的问题。(也,您考虑阅读<代码> PARCELSETION/COD>接口文档吗?)LoalSturgProvor不是问题,我将在GITHUB上发布一个迷你项目,这样您就可以看到所有的工作正常,只有当“不保留”活动被激活时,它才不工作。