FragmentTransaction不允许被添加到后堆? [英] FragmentTransaction is not allowed to be added to back stack?

查看:168
本文介绍了FragmentTransaction不允许被添加到后堆?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么不能我的片段被添加到后退堆栈?

  @覆盖
    公共无效onTabSelected(TAB键,android.app.FragmentTransaction英尺){
        FragmentTransaction交易= NULL;


            ListFragment newListFragment =新bListFragment();
            片段newFragment =新EntryFrag();
            交易= getFragmentManager()的BeginTransaction()。
            ft.replace(R.id.frameOne,newListFragment);
            ft.replace(R.id.frameTwo,newFragment);


        ft.addToBackStack(空);
        器transaction.commit();
    }
 

logcat的错误

  12月11日至二十二号:30:41.370:E / AndroidRuntime(13989):致命异常:主要
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.tyczj.bowling / com.tyczj.bowling.Tabs}:java.lang.IllegalStateException:这FragmentTransaction不允许被添加到背栈。
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread.access $ 1500(ActivityThread.java:122)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1005)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.os.Handler.dispatchMessage(Handler.java:99)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.os.Looper.loop(Looper.java:132)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread.main(ActivityThread.java:4028)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在java.lang.reflect.Method.invokeNative(本机方法)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在java.lang.reflect.Method.invoke(Method.java:491)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:844)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在dalvik.system.NativeStart.main(本机方法)
11月22日12:30:41.370:E / AndroidRuntime(13989):java.lang.IllegalStateException:通过引起该FragmentTransaction不允许被添加到背栈。
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.BackStackRecord.addToBackStack(BackStackRecord.java:422)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.tyczj.bowling.Tabs $ TabListener.onTabSelected(Tabs.java:155)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:483)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.android.internal.app.ActionBarImpl.setSelectedNavigationItem(ActionBarImpl.java:303)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.android.internal.app.ActionBarImpl.setNavigationMode(ActionBarImpl.java:883)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在com.tyczj.bowling.Tabs.onCreate(Tabs.java:32)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
十二月11日至22日:30:41.370:E / AndroidRuntime(13989):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)
 

解决方案

摆脱你的交易,相反,使用 FragmentTransaction 回调提供。没有必要实例化一个新的 FragmentTransaction 当一个人已经交给你了。通过在任何你想进入您的来电 ft.addToBackstack(); ,然后调用 ft.commit();

why cant my fragments be added to back stack?

@Override
    public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
        FragmentTransaction transaction = null;


            ListFragment newListFragment = new bListFragment();
            Fragment newFragment = new EntryFrag();
            transaction = getFragmentManager().beginTransaction();
            ft.replace(R.id.frameOne, newListFragment);
            ft.replace(R.id.frameTwo, newFragment);


        ft.addToBackStack(null);
        transaction.commit();
    }

logcat error

11-22 12:30:41.370: E/AndroidRuntime(13989): FATAL EXCEPTION: main
11-22 12:30:41.370: E/AndroidRuntime(13989): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tyczj.bowling/com.tyczj.bowling.Tabs}: java.lang.IllegalStateException: This FragmentTransaction is not allowed to be added to the back stack.
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread.access$1500(ActivityThread.java:122)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1005)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.os.Looper.loop(Looper.java:132)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread.main(ActivityThread.java:4028)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at java.lang.reflect.Method.invokeNative(Native Method)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at java.lang.reflect.Method.invoke(Method.java:491)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at dalvik.system.NativeStart.main(Native Method)
11-22 12:30:41.370: E/AndroidRuntime(13989): Caused by: java.lang.IllegalStateException: This FragmentTransaction is not allowed to be added to the back stack.
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.BackStackRecord.addToBackStack(BackStackRecord.java:422)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.tyczj.bowling.Tabs$TabListener.onTabSelected(Tabs.java:155)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:483)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.android.internal.app.ActionBarImpl.setSelectedNavigationItem(ActionBarImpl.java:303)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.android.internal.app.ActionBarImpl.setNavigationMode(ActionBarImpl.java:883)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at com.tyczj.bowling.Tabs.onCreate(Tabs.java:32)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
11-22 12:30:41.370: E/AndroidRuntime(13989):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)

解决方案

Get rid of your transaction and, instead, use the FragmentTransaction provided in the callback. There's no need to instantiate a new FragmentTransaction when one is already handed to you. Pass in whatever you want into your call to ft.addToBackstack(); and then call ft.commit();

这篇关于FragmentTransaction不允许被添加到后堆?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆