У меня есть 3 фрагмента и действие. Я хочу включить вкладки на ActionBar
и назначить фрагмент
каждой из трех вкладок. Как мне это правильно подключить?
ОРИГИНАЛЬНАЯ ЗАПИСЬ
У меня есть приложение, которое я разрабатываю, используя приложение Google I / O в качестве руководства. Я реализовал вкладки в ActionBar
. Вроде работают, пока ориентация планшета не поменяется. Например, все 3 вкладки имеют Фрагмент
. Я могу легко переключаться между ними, но когда я меняю ориентацию, независимо от того, Фрагмент
, который я просматривал последний раз, остается видимым, но нажатие на вкладки больше не меняет вид ... как будто они отключились. Как и ожидалось, возврат к исходной ориентации не «исправляет» это.
Я изучал возможность сохранения и восстановления состояния, но не вижу, как это поможет.
EDIT
уровень модуля:
Fragment mFragmentA = (Fragment) new AFragmentTab();
Fragment mFragmentB = (Fragment) new BFragmentTab();
Fragment mFragmentC = (Fragment) new CFragmentTab();
У меня есть что-то вроде этого в onCreate
:
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
ActionBar.Tab tabA = actionBar.newTab().setText("text a");
ActionBar.Tab tabB = actionBar.newTab().setText("text b");
ActionBar.Tab tabC = actionBar.newTab().setText("text c");
tabA.setTabListener(this);
tabB.setTabListener(this);
tabC.setTabListener(this);
actionBar.addTab(tabA);
actionBar.addTab(tabB);
actionBar.addTab(tabC);
и TabListener
, например:
EDIT ] это удалено
class MyTabListener implements ActionBar.TabListener {
private Fragment mFragment;
// Called to create an instance of the listener when adding a new tab
public MyTabListener(Fragment fragment) {
mFragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.fragment_content, mFragment, null);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// do nothing
}
}
РЕДАКТИРОВАТЬ
Я переместил TabListener
. Вместо того, чтобы быть отдельным классом, я реализую TabListener
в Activity
.Затем в методах Selected
и Unselected
у меня есть что-то вроде:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
case 0:
ft.add(R.id.fragment_content, mFragmentA, null);
break;
case 1:
ft.add(R.id.fragment_content, mFragmentB, null);
break;
case 2:
ft.add(R.id.fragment_content, mFragmentC, null);
break;
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
case 0:
ft.remove(mFragmentA);
break;
case 1:
ft.remove(mFragmentB);
break;
case 2:
ft.remove(mFragmentC);
break;
}
}
Он все еще делает то же самое. Я действительно не знаю, что происходит.