我注意到在使用时
actionBar.setSelectedNavigationItem(x)
在我的 Activity 的 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.setSelectedNavigationItem(position) 时,如何确保 ActionBar 不会首先选择位置 0 的选项卡。