如何在片段中以编程方式在Android中切换标签?

时间:2013-05-01 08:51:15

标签: android android-fragments android-tabhost

我已经实施了TabActivity,扩展了FragmentActivity。它有5个标签,每个标签是Fragment。我正在寻找的是以编程方式在标签之间切换。

例如:如果我在tab4中。点击按钮,我想从tab4移至tab1。尝试了很多,但找不到解决方案。

尝试以下但没有帮助。

来自SecondTab

public void switchTabInActivity(String value){
    FirstTab parent;
    parent = (FirstTab) getActivity().getParent();
    parent.switchTab(value);
}

TabActivity

  /** To Change Tab*/
public void switchTab(String tabno){ 
    this.onTabChanged(tabno);
}

6 个答案:

答案 0 :(得分:23)

对于Material支持,您可以通过以下方式从片段切换tablayout:

1)发送父活动接收的广播,然后修改标签。

TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabhost.getTabAt(2).select();

2。)修改了vino的答案,

{{1}}

tablayout是主xml中定义的tablayout的id。

答案 1 :(得分:19)

最后,我可以使用以下代码行以编程方式从片段之间切换选项卡

  TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost);
  host.setCurrentTab(2);

希望它会对某人有所帮助。

答案 2 :(得分:12)

我的主要活动中有标签(使用TabLayout而不是TabHost(折旧))(带有片段),在我的第一个标签(片段)中,片段中有一个点击监听器,用于更改MainActivity中的当前标签。

我在片段中的onCreateView()方法中通过以下方法成功更改了当前选项卡。

TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();

答案 3 :(得分:6)

看一下这个答案:https://stackoverflow.com/a/5460651/198996

((TabActivity) getParent()).getTabHost().setCurrentTab(2)

答案 4 :(得分:0)

如果您使用的是TabLayout而不是TabHost,那么我建议对BENN1TH的答案进行修改以使其对我有用:

  TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
  tabs.getTabAt(tabNumber).select(); 

(区别是R.id.tab_layout

答案 5 :(得分:0)

对于 kotlin ,请使用这个表单片段

 activity!!.<tab_id_in_xml>.getTabAt(tab_number)!!.select()