Android Fragments 如何在Android中通过编程方式从片段切换选项卡?

ut6juiuv  于 2023-01-31  发布在  Android
关注(0)|答案(7)|浏览(149)

我实现了一个扩展FragmentActivityTabActivity。它有5个选项卡,每个选项卡是一个Fragment。我正在寻找的是以编程方式在选项卡之间切换。

**例如:**如果我在选项卡4中。单击按钮时,我想从tab4移动到tab1。尝试了很多方法,但无法找到解决方案。

尝试以下方法,但没有帮助。

从第二个选项卡

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

选项卡活动

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

izkcnapc1#

对于材质支持,您可以通过以下方式从片段切换选项卡布局:
1)发送由父Activity接收的广播,然后父Activity修改选项卡。

context.sendBroadcast(yourintent);

2.)对维诺回答的修正,

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

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

myzjeezk

myzjeezk2#

最后,我可以使用下面的代码行通过Fragments编程在选项卡之间切换

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

希望能对一些人有所帮助。

o3imoua4

o3imoua43#

我的主活动中有选项卡(使用TabLayout而不是TabHost(折旧))(带有片段),其中在我的第一个选项卡(片段)中,片段中有一个点击侦听器,用于更改我的主活动中的当前选项卡。
我通过片段中onCreateView()方法中的以下命令成功更改了当前选项卡。

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

r8uurelv4#

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

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

jdzmm42g5#

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

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

(The差值为R.id.tab_layout

pzfprimi

pzfprimi6#

对于Kotlin,请使用此表单片段

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

7y4bm7vi7#

下面是“新”的Kotlin的另一种方法:

requireActivity().findViewById<TabLayout>(R.id.tab_layout)?.getTabAt(destinationTabNumber)?.select()

使用?.代替!!以避免Assert。

相关问题