2017-07-05 3 views
0

Ich habe 2 Fragmente entfernenKann nicht Fragment aus Backstack mit popBackStack() oder remove()

FragmentTransaction ft = fm.beginTransaction(); 
ft.addToBackStack("SportsList").replace(R.id.fragment, sportsListFragment); 

Und dann gebe ich ein Workout

FragmentTransaction ft = fm.beginTransaction(); 
ft.addToBackStack("Workout").replace(R.id.fragment, workoutFragment); 

Ich verwende replace() Methode so SportsList sollte entfernt werden, aber wenn ich popBackStackImmediate() anrufen bleibt es dort. So

Ich versuchte SportsList manuell Workout Fragment zu entfernen, wenn ich auf eine Schaltfläche klicken. Also ich dies tun:

FragmentManager fm = getActivity().getSupportFragmentManager(); 
Fragment oldFragment = fm.findFragmentByTag("SportsList"); 
fm.beginTransaction().remove(oldFragment).commit(); 

Aber das gibt mir folgende Fehlermeldung:

FATAL EXCEPTION: main java.lang.NullPointerException: Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim' on a null object reference at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:770) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 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)

Ich habe auch versucht, dies zu tun:

fm.popBackStack("SportsList", 0); 

und dieses:

fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 

und dies:

fm.popBackStack("SportsList", FragmentManager.POP_BACK_STACK_INCLUSIVE); 

Aber diese Entfernung Strom-Fragment (Workout Fragment) anstelle von SportsList Fragment. Ich habe gerade keine Ideen mehr. dass neben:

ft.replace(R.id.fragment, sportsListFragment); 

Zugabe noch SportsList Fragment auf das Backstack. Wie könnte das möglich sein?

Antwort

0

versuchen Sie dies:

ft.addToBackStack("SportsList").replace(R.id.fragment, sportsListFragment).addToBackStack(null); 
Verwandte Themen