Как программно переключать вкладки в android из фрагмента?

я реализовал TabActivity которая расширяет FragmentActivity. Он имеет 5 вкладок, каждая вкладка-это Fragment. То, что я ищу, - это программно переключаться между вкладками.

например: если я нахожусь в tab4. При нажатии кнопки я хочу перейти от tab4 to 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);
}

4 ответов


для материальной поддержки вы переключаете tablayout от фрагмента следующими способами:

1) отправьте трансляцию, полученную родительским действием, которое затем изменяет вкладку.

context.sendBroadcast(yourintent);

2.) Модификация ответа вина,

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

tablayout-это идентификатор tablayout, определенный в вашем основном xml.


наконец-то я могу переключаться между вкладками программно из фрагментов, используя следующую строку кода

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

надеюсь, это поможет кому-то.


взгляните на этот ответ: https://stackoverflow.com/a/5460651/198996

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

У меня есть вкладки (через TabLayout не TabHost(амортизируется))(с фрагментами) в моей основной деятельностью, в которой в моей первой вкладке(фрагмент) с помощью мыши слушателя в Фрагмент что для изменения текущей вкладке в мой класс MainActivity.

Я успешно изменяю текущую вкладку с помощью ниже в методе onCreateView () внутри фрагмента.

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