我注意到,在位置0的標籤項總是選擇的第一,然後在位置的標籤項x被加載。這意味着(因爲我使用碎片)2片段被加載。其中一人是沒有必要的......的Android動作條選項卡上設置最初選擇的選項卡
這裏是我的代碼:
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處的選項卡。
這很完美。我覺得有一個簡單的修復。謝謝。 – mdupls 2012-03-27 20:00:35
它可以工作,但是當創建活動時,我可以看到ViewPager的轉換。有什麼辦法,如何禁用它? – sealskej 2012-12-06 15:28:40
我不確定我是否有問題作者的相同問題。在我的情況下,函數setSelectedNavigationItem(...)時,我的Activity的onCreate調用片段實例化兩次或更多。爲此改變解決了我的問題。謝謝。 – 2013-01-09 16:39:12