问题
I have implemented a TabActivity
which extends FragmentActivity
. It has 5 tabs each tab is a Fragment
. What i am looking for is to switch between the tabs programmatically.
For eg: if i am in tab4. On button click I want to move from tab4
to tab1
. Tried a lot but couldn't find the solution for this.
Tried with the following but it doesn't help.
From 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);
}
回答1:
for Material support you switch the tablayout from a fragment in the following ways:
1) send a broadcast that is received by the parent activity which then modifies the tab.
context.sendBroadcast(yourintent);
2.) A modification of vino's answer,
TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabhost.getTabAt(2).select();
tablayout is the id of the tablayout as defined in your main xml.
回答2:
Finally i can switch between the tabs programatically from Fragments using the following line of code
TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost);
host.setCurrentTab(2);
Hope it will help some one.
回答3:
I have tabs (using TabLayout not TabHost(depreciated))(with Fragments) in my Main Activity in which in my first tab(fragment) with a click listener in the fragment which is for changing the current tab in my MainActivity.
I successfully change the current tab via the below in the onCreateView() method within the fragment.
TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();
回答4:
Take a look at this answer: https://stackoverflow.com/a/5460651/198996
((TabActivity) getParent()).getTabHost().setCurrentTab(2)
回答5:
If you're using TabLayout instead of TabHost , I suggest a modification to BENN1TH's answer that worked for me:
TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
tabs.getTabAt(tabNumber).select();
(The difference is R.id.tab_layout
)
来源:https://stackoverflow.com/questions/16315280/how-to-switch-tabs-programmatically-in-android-from-fragment