【问题标题】:How to Load fragment from BackStack in android如何在android中从BackStack加载片段
【发布时间】:2014-12-19 04:10:29
【问题描述】:

我在一个片段中有 4 个按钮。当我单击一个按钮“A”时,会加载一个片段。当点击按钮“B”时,另一个片段被加载,依此类推。我的问题是当我再次单击按钮时,新片段正在加载。我想从 backStack 加载前一个片段。

    if(rootView.findViewById(R.id.talk_main_container)!=null){
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            Bundle bundle=new Bundle();
            bundle.putString("cityid", cityId);
            if(position == 1){
                MainForumsFragment mTalkNewFragment = new MainForumsFragment(); 
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            if(position == 2){
                TalkNewFragment mTalkNewFragment = new TalkNewFragment();  
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            if(position == 3){
                TalkNewFragment mTalkNewFragment = new TalkNewFragment();  
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            transaction.addToBackStack(null);
            transaction.commit();  
        }

那么我该如何实现呢?

【问题讨论】:

    标签: android android-fragments fragment fragment-backstack


    【解决方案1】:

    不要向 backstack 添加任何片段

    删除 transaction.addToBackStack(null);

    【讨论】:

      【解决方案2】:

      你应该使用

      FragmentTransaction.replace(int containerId, Fragment fragment, String tag)
      

      然后你就可以取回片段了:

      getFragmentManager.findFragmentByTag(String tag)
      

      【讨论】:

        【解决方案3】:

        将 Fragments 添加到 backstack 时添加特定的字符串标签,而不是 addBackStack(null)

        您可以使用popBackStack(tag, 0)popBackstackImmediate() 从后台弹出片段。这将弹出所有片段,直到找到具有指定标签的片段。

        确保在执行此操作时注意生命周期事件的顺序

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-30
          • 2014-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多