2

我使用 FragmentTabHost 创建了三个选项卡。现在我需要让所有的导航都在标签下。我怎么能得到这个。我需要使用 TabGroupActivity 来获取我们得到的东西。

Tab1 --->frag1-->frag2

Tab2 --->frag3

Tab3 --->frag4--->frag5

我使用了 fragmentTransaction.add()、fragmentTransaction.remove()、fragmentTransaction.replace()。这三种方法但没有给出解决方案。

Replace 方法在现有的片段视图之上显示新的片段视图。

RemoveAdd,从这两个中 remove 只起作用, add 不起作用。

提前致谢。

TabHostMain.java

    @Override
    protected void onCreate(Bundle savedInstanceState)
 {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.bottom_tabs);

mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
                mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
            View view;
    view=getTabView(R.drawable.ic_launcher);

    Bundle b = new Bundle();
    b.putString("key", "Simple");
    mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator(view),Fragment1.class, null);

    b = new Bundle();
    b.putString("key", "Contacts");
    view=getTabView(R.drawable.ic_launcher);
    mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator(view), Fragment2.class, null);

    b = new Bundle();
    b.putString("key", "Custom");
    view=getTabView(R.drawable.ic_launcher);
    mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator(view),Fragment3.class, null);

}

片段3.java

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

        View view=LayoutInflater.from(getActivity()).inflate(R.layout.activity_second, null);

        ((TextView)view.findViewById(R.id.second_act_text)).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                FragmentManager fm=getChildFragmentManager();
                FragmentTransaction fragmentTransaction=fm.beginTransaction();
                fragmentTransaction.replace(R.id.second_activity, new Fragment1()).addToBackStack(null).commit();
            }
        });
        return view;
    }
4

1 回答 1

2

每个选项卡中不同片段导航堆栈的概念已经在 stackoverflow 上讨论过很多次,例如:

使用 Fragments 为 Android 中的每个选项卡单独返回堆栈

无需管理您自己的自定义导航返回堆栈即可实现此目的的一种简单/粗略的方法是在每个选项卡下都有一个根片段,然后每当根片段想要导航到另一个片段(片段 B)时,只需最初显示一个新Activity使用片段 B 并且该 Activity 将有自己的片段导航返回堆栈。

Tab1 --->root frag1 --> Activity(自己的导航回栈)--> frag2

Tab2 --->根片段3

Tab3 --->root frag4 --> Activity(自己的导航回栈)--> frag5 --> frag6 --> frag7

StackAnywhere应用程序就是一个执行此类操作的应用程序示例。它大量使用选项卡,但是当您在这些选项卡中导航时,它通常会将导航移动到新的活动。然而,YMMV 采用这种方法。

于 2013-05-15T10:00:44.583 回答