Fragment stürzt mit Paket -: nicht Marschall Wert-Fehler beim onPause-Methode aufgerufen wird
Ich habe die Entwicklung von android-apps für eine Weile jetzt, aber erst vor kurzem bekommen in Fragmente und daher hatte ich eine Menge Probleme, zu lernen, wie mit Ihnen zu arbeiten. Eine der Aktivitäten, für meine Anwendungen ist in vier verschiedenen Fragmenten, von denen jedes eine Liste von Elementen angezeigt, um den Benutzer. Jedes fragment wird erstellt, auf den ersten und wird nur angezeigt, nachdem Sie ausgewählt und ausgeblendet, wenn eine andere Registerkarte ausgewählt ist. Sobald jedes dieser Fragmente erstellt eine ArrayList JSONObjects als ein argument übergeben wird, um das fragment, wie folgt
ft = fm.beginTransaction();
if(currentFragment !=null){
ft.hide(currentFragment);
}
if(whereFragment !=null){
ft.show(whereFragment);
}else{
if(mPlaceList.size()>0){
Bundle bundle = new Bundle();
bundle.putSerializable("array", mPlaceList);
whereFragment = new WhereFragment();
whereFragment.setArguments(bundle);
ft.add(R.id.newpost_container,whereFragment, "whereFragment");
}
}
ft.commit();
currentFragment = whereFragment;
Arraylist empfangen wird, in das fragment und alles funktioniert Prima.
actList = (ArrayList<JSONObject>) getArguments().getSerializable("array");
doingAdapter = new DoingAdapter(getActivity(), actList);
actListView.setAdapter(doingAdapter);
Gibt es eine Schaltfläche in der übergeordneten Aktivität, startet das Gerät die Kamera. Wenn das passiert und die onPause-Methode im fragment aufgerufen wird, stürzt die Anwendung ab und ich bekomme diese Fehlermeldung in meinem Logcat
Logcat:
06-23 17:51:31.190: E/ACRA(29221): com.parspake.anar fatal error : Parcel: unable to marshal value {"type":"act","id":"5327f9827f49143f3a001c76","title":"خونه","actType":"where"}
06-23 17:51:31.190: E/ACRA(29221): java.lang.RuntimeException: Parcel: unable to marshal value {"type":"act","id":"5327f9827f49143f3a001c76","title":"خونه","actType":"where"}
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeValue(Parcel.java:1235)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeList(Parcel.java:622)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeValue(Parcel.java:1195)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeMapInternal(Parcel.java:591)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Bundle.writeToParcel(Bundle.java:1619)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeBundle(Parcel.java:605)
06-23 17:51:31.190: E/ACRA(29221): at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:132)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeTypedArray(Parcel.java:1102)
06-23 17:51:31.190: E/ACRA(29221): at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:368)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeParcelable(Parcel.java:1254)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeValue(Parcel.java:1173)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeMapInternal(Parcel.java:591)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Bundle.writeToParcel(Bundle.java:1619)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Parcel.writeBundle(Parcel.java:605)
06-23 17:51:31.190: E/ACRA(29221): at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2096)
06-23 17:51:31.190: E/ACRA(29221): at android.app.ActivityThread$StopInfo.run(ActivityThread.java:2918)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Handler.handleCallback(Handler.java:615)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Handler.dispatchMessage(Handler.java:92)
06-23 17:51:31.190: E/ACRA(29221): at android.os.Looper.loop(Looper.java:137)
06-23 17:51:31.190: E/ACRA(29221): at android.app.ActivityThread.main(ActivityThread.java:4827)
06-23 17:51:31.190: E/ACRA(29221): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 17:51:31.190: E/ACRA(29221): at java.lang.reflect.Method.invoke(Method.java:511)
06-23 17:51:31.190: E/ACRA(29221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-23 17:51:31.190: E/ACRA(29221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
06-23 17:51:31.190: E/ACRA(29221): at dalvik.system.NativeStart.main(Native Method)
Habe ich gesucht um in stackoverflow und ich sehe einige Fragen mit Fragen ähnlich wie mir, aber ich kann nicht scheinen, etwas zu nehmen von einem von Ihnen, der mir helfen kann mit meiner situation. Ich habe doch den Kern des Problems, mit dem fragment zu versuchen, um Ihren Zustand speichern und nicht in der Lage, sich zu serialisieren meine json-Objekten, aber es wäre toll, wenn mir jemand helfen könnte entweder Serialisierbar oder Parcelable-interfaces zu beheben mein Problem, das wäre toll. Auch ich habe implementiert Serializable in beiden fragment und Aktivität, wie Sie vorgeschlagen wurde, von anderen.
InformationsquelleAutor Nami Alejandro Salimi | 2014-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie schon Daten erhalten, die Sie benötigen, dann entfernen Sie einfach die Daten aus dem bundle.
Ich bin mir ziemlich sicher jetzt, dass durch das Ausblasen jeder Wert aus meinem bundle habe ich nicht mehr erhalten Marschall Fehler, aber könnte mir bitte jemand erklären, warum muss jeder Wert entfernt werden, selbst wenn das bundle nie berührt wieder nach dem Auslesen aus? Sehr neugierig!
ich wurde immer diese Fehlermeldung wenn ich starten einige Aktivitäten, aber diese funktionierte. Dank
InformationsquelleAutor Lee Jeongmin
Gut ich es geschafft, einen Weg aus dieser, es kann nicht sein das die meisten standard-der Weg, Dinge zu tun, aber es tatsächlich mein problem gelöst und kann anderen helfen, zu einem gewissen Grad.
Was ich Tat, war anstelle der Umwandlung der JSONArray, die empfangen wurde, aus der API in eine JSON arraylist und schickt es dann an das fragment, konvertierte ich die JSON-array zu string und schickte es zusammen mit dem bundle.
Im fragment erhielt ich das Paket und konvertiert den string in JSONArray.
Ich dann Durchlaufen die JSONArray und konvertiert es in ein JSONObject ArrayList. Und in Ordnung zu halten, werden die änderungen an meiner Liste nach dem fragment im Einsatz gewesen, konvertierte ich die ArrayList wieder in einem JSONArray und gespeichert.
Nun, dass der Staat gerettet wurde, könnte es leicht wiederhergestellt werden, in der onCreateView-Methode wie folgt
Diese Weise würde ich nicht mit der Frage befassen, was mein JSONObjects Serializable oder Parcelable
InformationsquelleAutor Nami Alejandro Salimi