【问题标题】:how to switch from one fragment to another fragment android如何从一个片段切换到另一个片段android
【发布时间】:2015-09-01 16:57:43
【问题描述】:

嗨,我有 5 个片段现在我第一次转到该片段的 Activity,然后默认调用第一个片段,然后在第一个 Fragment 上有一个按钮,通过单击该按钮我转到第二个片段,类似地在第二个片段中有一个按钮,单击该按钮我转到第三个片段,依此类推。

现在我的问题是当前我在第五个片段,现在我想从第五个片段转到第二个片段,我该怎么办? 谁能告诉我?

【问题讨论】:

标签: android android-fragments fragmentmanager


【解决方案1】:

您可以按名称弹出片段。在将片段添加到后台堆栈时,只需给它们命名即可。

fragmentTransaction.addToBackStack("frag2");

然后在 fragment5 中,使用名称 ie..frag2 弹出回栈并包含 POP_BACK_STACK_INCLUSIVE

    someButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            FragmentManager fm = getActivity()
                    .getSupportFragmentManager();
            fm.popBackStack ("frag2", FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }
    });

【讨论】:

    【解决方案2】:

    这里是添加和替换片段的方法。

     public void addReplaceFragment(Fragment fragment, int addOrReplace) {
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
    
        switch (addOrReplace) {
            case addFragment:
                transaction.add(R.id.frame_containerforsearchable, fragment);
                transaction.commit();
                break;
            case replaceFragment:
                transaction.replace(R.id.frame_containerforsearchable, fragment);
                transaction.commit();
                break;
            default:
                break;
        }
    }
    

    片段的调用是..

    addReplaceFragment(currencyFragmentWithSearch, replaceFragment);
    
    • replaceFragment 整数变量
    • currencyFragmentWithSearch 片段实例

    【讨论】:

      【解决方案3】:

      你总是可以这样做的:)

      getActivity().getSupportFragmentManager().replace(R.id.yourFrameLayout,new Fragment2(),"FRAG2");
      
      OR
      
      Fragment fragment = getActivity().getSupportFragmentManager().findFragmentByTag("FRAG2");
      getActivity().getSupportFragmentManager().replace(R.id.yourFrameLayout,,"FRAG2");
      

      【讨论】:

        【解决方案4】:

        试试这个代码:

        Fragment fragment = new SecondFragmentName();
        FragmentManager fm = getActivity().getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.content_frame, fragment);
        ft.commit();
        

        【讨论】:

          【解决方案5】:

          只是对 mudit_sen 代码的小修正。仅当您添加 .beginTransaction 时,它才有效。谢谢。

          getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.FrameLayoutId,new FragmentName()).commit();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-25
            • 1970-01-01
            • 1970-01-01
            • 2016-09-30
            相关资源
            最近更新 更多