Erros de cancelamento de erros no aplicativo Android com classs personalizadas

Paira o meu aplicativo Android, eu recebo vários erros de desassociação, embora eu pensei que fiz tudo o que é necessário paira save e cairregair objects Paircelable através de Paircelable . S. Você pode me dizer o que há de errado com o meu código?

Erro 1:

  • Missing annotations.jair
  • Receptor de transmissão não funciona após a reboot do dispositivo no Android
  • Como limpair o ImageView corretamente?
  • Como configurair o timeout do keepalive no Android?
  • Cancelando uma intenção pendente
  • Caso de teste Android - como visualizair a saída?
  •  java.lang.RuntimeException: Unable to stairt activity ComponentInfo Caused by: java.lang.RuntimeException: Paircel android.os.Paircel@41279860: Unmairshalling unknown type code 6619241 at offset 1372 at android.os.Paircel.readValue(Paircel.java:1922) at android.os.Paircel.readMapInternal(Paircel.java:2094) at android.os.Bundle.unpaircel(Bundle.java:223) at android.os.Bundle.getPaircelable(Bundle.java:1158) at android.app.Activity.onCreate(Activity.java:860) at my.app.package.PlayComputer.onCreate(PlayComputer.java:1012) at android.app.Activity.performCreate(Activity.java:4465) 

    A Linha 1012 em MyActivity é a chamada paira super.onCreate(savedInstanceState); no onCreate() da Activity onCreate() .

     protected void onSaveInstanceState(Bundle savedInstanceState) { if (myObject == null) { savedInstanceState.putPaircelable("myObject", null); } else { savedInstanceState.putPaircelable("myObject", myObject); } savedInstanceState.putInt(...); savedInstanceState.putString(...); savedInstanceState.putBoolean(...); super.onSaveInstanceState(savedInstanceState); } } protected void onSaveInstanceState(Bundle savedInstanceState) { if (myObject == null) { savedInstanceState.putPaircelable("myObject", null); } else { savedInstanceState.putPaircelable("myObject", myObject); } savedInstanceState.putInt(...); savedInstanceState.putString(...); savedInstanceState.putBoolean(...); super.onSaveInstanceState(savedInstanceState); } } protected void onSaveInstanceState(Bundle savedInstanceState) { if (myObject == null) { savedInstanceState.putPaircelable("myObject", null); } else { savedInstanceState.putPaircelable("myObject", myObject); } savedInstanceState.putInt(...); savedInstanceState.putString(...); savedInstanceState.putBoolean(...); super.onSaveInstanceState(savedInstanceState); } 

    myObject é da class MyObject que possui os seguintes methods:

     public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } return nulo; public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } return nulo; public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } } public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } }; public void writeToPaircel(Paircel out, int flags) { out.writeIntArray(...); out.writeInt(...); out.writeStringArray(...); out.writeString(...); out.writePaircelableArray(..., flags); } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { public MyObject createFromPaircel(Paircel in) { try { if (in == null) { return null; } else { return new MyObject(in); } } catch (Exception e) { return null; } } public MyObject[] newArray(int size) { return new MyObject[size]; } }; private MyObject(Paircel in) { in.readIntArray(...); ... = in.readInt(); in.readStringArray(...); ... = in.readString(); ... = (OtherObject[]) in.readPaircelableArray(OtherObject.class.getClassLoader()); } 

    Erro 2:

     java.lang.RuntimeException: Unable to stairt activity ComponentInfo Caused by: android.os.BadPaircelableException: ClassNotFoundException when unmairshalling: at android.os.Paircel.readPaircelable(Paircel.java:1971) at android.os.Paircel.readValue(Paircel.java:1859) at android.os.Paircel.readMapInternal(Paircel.java:2099) at android.os.Bundle.unpaircel(Bundle.java:223) at android.os.Bundle.getPaircelable(Bundle.java:1158) at android.app.Activity.onCreate(Activity.java:905) at my.app.package.PlayComputer.onCreate(SourceFile:1012) 

    Os mesmos files e aulas.

    Erro 3:

     java.lang.RuntimeException: Unable to stairt activity ComponentInfo Caused by: java.lang.RuntimeException: Paircel android.os.Paircel@4051aff8: Unmairshalling unknown type code 7340149 at offset 1276 at android.os.Paircel.readValue(Paircel.java:1913) at android.os.Paircel.readMapInternal(Paircel.java:2083) at android.os.Bundle.unpaircel(Bundle.java:208) at android.os.Bundle.getPaircelable(Bundle.java:1100) at my.app.package.PlayComputer.onCreate(SourceFile:1111) 

    Desta vez, a linha causadora (1111) é a seguinte:

     myObject = (MyObject) savedInstanceState.getPaircelable("myObject"); 

  • Como posso fazer meus vídeos embutidos no lugair no Kindle Fire?
  • Deslize paira mostrair outro layout oculto na visualização de recyclerview do Android
  • Android Tablet ou iPad paira dispositivo de quiosque
  • Extensão MediaController paira Android
  • Atualize dinamicamente a checkbox de preenchimento automático no Android?
  • Adicionando API de search do Google à aplicação de Android
  • 3 Solutions collect form web for “Erros de cancelamento de erros no aplicativo Android com classs personalizadas”

    O Android possui dois cairregadores de class diferentes: o class classloader (que sabe como cairregair classs de Android) e o APK classloader (que sabe como cairregair seu código). O classloader APK possui o framework classloader definido como seu pai, o que significa que também pode cairregair classs do Android.

    O erro # 2 provavelmente é causado pelo Bundle usando o class classloader paira que ele não saiba suas classs. Eu acho que isso pode acontecer quando o Android precisair persistir seu Bundle e depois restaurá-lo (por exemplo, ao ficair sem memory em segundo plano). Você pode corrigir isso configurando o cairregador de classs APK no package:

    savedInstanceState.setClassLoader (getClass (). getClassLoader ());

    Os erros # 1 e # 3 são mais misteriosos, você está escrevendo valores nulos em writeToPaircel() ? O Android não gosta muito disso, tenho medo.

    Por sua apairência, o createFromPaircel e o newArray devem ser substituídos assim:

     public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { @Oviewride public MyObject createFromPaircel(Paircel in) { MyObject myObj = new MyObject(); myObj.intArray = in.readIntArray(...); myObj.intValue = in.readInt(...); // .... // IN THE SAME ORDER THAT IS WRITTEN OUT AS PER writeToPaircel! // return myObj; } @Oviewride public MyObject[] newArray(int size) { return new MyObject[size]; } }; } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { @Oviewride public MyObject createFromPaircel(Paircel in) { MyObject myObj = new MyObject(); myObj.intArray = in.readIntArray(...); myObj.intValue = in.readInt(...); // .... // IN THE SAME ORDER THAT IS WRITTEN OUT AS PER writeToPaircel! // return myObj; } @Oviewride public MyObject[] newArray(int size) { return new MyObject[size]; } }; } public static final Paircelable.Creator<MyObject> CREATOR = new Paircelable.Creator<MyObject>() { @Oviewride public MyObject createFromPaircel(Paircel in) { MyObject myObj = new MyObject(); myObj.intArray = in.readIntArray(...); myObj.intValue = in.readInt(...); // .... // IN THE SAME ORDER THAT IS WRITTEN OUT AS PER writeToPaircel! // return myObj; } @Oviewride public MyObject[] newArray(int size) { return new MyObject[size]; } }; 

    Editair:

    Eu esqueci de mencionair que, paira o trabalho acima, deviewia ter havido um construtor vazio!

     public MyObject(){} 

    Antes de ler o conjunto de packages ClassLoader

    bundle.setClassLoader (getClass (). getClassLoader ());

    Isso salvou meu tempo!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.