我使用操作欄標籤導航,當我旋轉屏幕,我得到IndexOutOfBoundsException異常IndexOutOfBoundsException異常時,導航選項卡狀態
根據logcat的問題是getSupportActionBar().setSelectedNavigationItem( savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Restore the previously serialized current tab position.
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
getSupportActionBar().setSelectedNavigationItem(
savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
// Serialize the current tab position.
outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getSupportActionBar()
.getSelectedNavigationIndex());
}
編輯
我發現問題。我使用AsyncTask來收集將顯示在標籤中的所有信息,並在onPostExecute
中添加標籤。
onRestoreInstanceState
調用之前onPostExecute
所以選項卡數仍爲0
它被調用,如果我把System.out.println()放在那個方法裏面,它會向logcat輸出消息。 – pedja 2013-02-14 10:33:11
嗯..他告訴你什麼,如果你在存儲和恢復時調用'getTabCount()',另外 - 爲了確保 - 在存儲時保存時是否會得到與恢復相同的整型值? – MalaKa 2013-02-14 10:56:17
如果我調用'System.out.println(getSupportActionBar()。getNavigationItemCount());'in'onRestoreIn ......'我總是得到0。在'onSaveInstanceState'我得到正確的標籤計數。 – pedja 2013-02-14 11:02:35