Я заметил, что при использовании
actionBar.setSelectedNavigationItem(x)
в методе onCreate() моей активности, элемент табуляции в позиции 0 всегда выбирается первым, а затем загружается элемент табуляции в позиции x. Это означает, что (поскольку я использую фрагменты) 2 Фрагменты загружаются. Один из них не нужен...
Здесь мой код:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Determine which bundle to use; either the saved instance or a bundle
// that has been passed in through an intent.
Bundle bundle = getIntent().getExtras();
if (bundle == null) {
bundle = savedInstanceState;
}
// Initialize members with bundle or default values.
int position;
if (bundle != null) {
position = bundle.getInt("selected_tab");
} else {
position = 0;
}
// Set the tabs.
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = actionBar
.newTab()
.setText("Tab 1")
.setTabListener(
new TabListener<RendersGridFragment>(this, "1",
RendersGridFragment.class));
actionBar.addTab(tab);
tab = actionBar
.newTab()
.setText("Tab 2")
.setTabListener(
new TabListener<RendersGridFragment>(this, "2",
RendersGridFragment.class));
actionBar.addTab(tab);
tab = actionBar
.newTab()
.setText("Tab 3")
.setTabListener(
new TabListener<RendersGridFragment>(this, "3",
RendersGridFragment.class));
actionBar.addTab(tab);
actionBar.setSelectedNavigationItem(position);
}
Кажется, что вкладка в позиции 0 выбирается изначально по умолчанию. Но, как вы можете видеть, я передаю пакеты, чтобы убедиться, что последняя выбранная вкладка по-прежнему выбрана, когда снова запущен метод onCreate().
Например, если последняя выбранная вкладка находится в позиции 2, запускается функция onCreate(), а вкладка в позиции равна 0, тогда загружается вкладка в позиции 2.
Как я могу убедиться, что ActionBar не выбирает вкладку в позиции 0 сначала при использовании actionBar.setSelectedNavigationItem(position).