我使用FragmentTabHost创建了三个选项卡。现在我需要让所有导航都在标签下。我怎么能得到这个。我需要使用TabGroupActivity得到我们得到的东西。
TAB1 ---> frag1 - > frag2
TAB2 ---> frag3
TAB3 ---> frag4 ---> frag5
我使用过fragmentTransaction.add(),fragmentTransaction.remove(),fragmentTransaction.replace()。这三种方法但没有给出解决方案。
替换方法在现有片段视图的顶部显示新的片段视图。
删除和添加,从这两个仅删除的作品,添加不起作用。
提前致谢。
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);
}
Fragment3.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;
}
答案 0 :(得分:2)
每个选项卡中不同片段导航堆栈的概念已在stackoverflow上讨论了很多次,例如:
Separate Back Stack for each tab in Android using Fragments
在不必管理自己的自定义导航后台堆栈的情况下实现此目的的一种简单/粗略方法是在每个选项卡下都有一个根片段,然后每当根片段想要导航到另一个片段(片段B)时,只需显示一个新的Activity最初使用片段B,并且Activity将有自己的片段导航回栈。
Tab1 ---> root frag1 - >活动(自己的导航返回堆栈) - > frag2
Tab2 ---> root frag3
Tab3 ---> root frag4 - >活动(自己的导航返回堆栈) - > frag5 - > frag6 - > frag7
执行此类操作的应用的示例实际上是StackAnywhere应用。它大量使用选项卡,但是当您在这些选项卡中导航时,它通常会将导航移动到新的活动。然而,YMMV采用这种方法。