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

问题描述 投票:21回答:5

我实施了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);
}
android android-fragments android-tabhost
5个回答
23
投票

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

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

context.sendBroadcast(yourintent);

2.)对vino答案的修改,

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

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


19
投票

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

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

希望它会帮助一些人。


12
投票

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

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

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

6
投票

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

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

0
投票

如果您使用TabLayout而不是TabHost,我建议修改BENN1TH的答案对我有用:

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

(区别是R.id.tab_layout

© www.soinside.com 2019 - 2024. All rights reserved.