Я использую ActionBar.TabListener, как указано здесь: Автоматическое переключение вкладок панели действий:
Я добавляю несколько вкладок с tablistener следующим образом
Вкладка 1 → Фрагмент a → фрагмент b → Фрагмент c Вкладка 2- > Фрагмент d
Я нажимаю на Tab 1, перехожу от a к b в c. Когда я остаюсь на вкладке 1, и я нахожусь в "a", щелчок назад идет в b, щелчок назад в b переходит к "a". Это связано с тем, что я добавил addtoBackStack() в b и c
Но когда я нахожусь в Fragent 'c. и нажмите на вкладку 2 и вернитесь к вкладке 1 и нажмите "Назад", я получу пустую белую вкладку.
Это кажется ожидаемым, потому что ft.attach() воссоздает представление в соответствии с документацией.
То, что я пробовал до сих пор: * Используется функция фрагментации, чтобы явно добавить 'a' в backstack в методе tablistener onselected().
Как сохранить иерархию представлений в Tab 1 перед тем, как перейти на вкладку 2 и воссоздать иерархию, когда вернусь в Tab 1, чтобы когда я нахожусь в Tab C, я могу перейти к вкладкам B и A?
EDIT: (также добавлены теги фрагментов) Я получаю следующую трассировку стека при нажатии кнопки "Назад" на вкладке 1 после перехода с вкладки 2
W/System.err(26823): java.lang.IllegalStateException: Fragment already added: SearchTab{427a29a8 #1 id=0x1020002 search}
W/System.err(26823): at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1146)
W/System.err(26823): at android.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722)
W/System.err(26823): at android.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1504)
W/System.err(26823): at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:493)
W/System.err(26823): at android.app.Activity.onBackPressed(Activity.java:2220)
W/System.err(26823): at android.app.Activity.onKeyUp(Activity.java:2194)
W/System.err(26823): at android.view.KeyEvent.dispatch(KeyEvent.java:2782)
W/System.err(26823): at android.app.Activity.dispatchKeyEvent(Activity.java:2428)
W/System.err(26823): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2076)
W/System.err(26823): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4192)
W/System.err(26823): at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4121)
W/System.err(26823): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3169)
W/System.err(26823): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(26823): at android.os.Looper.loop(Looper.java:137)
W/System.err(26823): at android.app.ActivityThread.main(ActivityThread.java:5328)
W/System.err(26823): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(26823): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(26823): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
W/System.err(26823): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
W/System.err(26823): at dalvik.system.NativeStart.main(Native Method)