Haben Sie ein interessantes Problem mit der Transaktion auf Fragmenten nur auf Android Lollipop. Absturz passiert, wenn ich zurück gehe und zuvor hinzugefügte Fragmente entferne.NullPointerException: Versuch, von Feld zu lesen 'int android.app.Fragment.mContainerId' auf einem Nullobjektreferenz
Hier ist Stacktrace:
FATAL EXCEPTION: main
Process: com.parkme.consumer, PID: 15560
java.lang.NullPointerException: Attempt to read from field 'int android.app.Fragment.mContainerId' on a null object reference
at android.app.BackStackRecord$1.onPreDraw(BackStackRecord.java:1131)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1970)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Wie ich Transaktion tue:
getFragmentManager().beginTransaction()
.replace(R.id.list_holder, listFragment)
.commit();
R.id.list_holder
<FrameLayout
android:id="@+id/list_holder"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
Wie ich es entfernen:
getFragmentManager().beginTransaction()
.remove(listFragment)
.commit();
Und ich bekomme den Absturz beim letzten Codefragment.
UPDATE
Nachdem ich entfernt hatte hat es keine Abstürze mehr:
Transition slideTransition = TransitionInflater.from(ParkmeApplication.getContext()).inflateTransition(R.transition.slide_right);
setExitTransition(slideTransition);
slide_right:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<slide
android:duration="@android:integer/config_shortAnimTime"
android:slideEdge="right"/>
</transitionSet>
Warum entfernen Sie das Fragment explizit statt Zugabe zu Backstack? –
@MohammedAtif Es gibt einige andere Codezeilen, um bestimmte Änderungen vorzunehmen. – Magirus
Mögliches Duplikat von [Was ist eine NullPointerException, und wie behebe ich sie?] (Https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Zoe