我閱讀了許多主題,但沒有任何內容可以幫助我。 我不能發佈我的代碼,但我試着解釋我的情況:IllegalStateException在onsaveinstancestate後無法執行此操作
I'm得到一個IllegalStateException:不能與DrawerLayout /導航執行此操作的onSaveInstanceState
後,我有一個活動主(抽屜)。在這個活動中總是有1個片段。起初有片段WelcomePage。
當用戶點擊片段被新的片段替換(我稱之爲:FootballClubs)。這個片段包含一個ViewPager,所以它由多個頁面組成;每個頁面都是一個FootballClub片段。 (所以片段FootballClubs包含一個FootballClub片段的多個頁面)。在每個FootballClub片段中都有一個用戶可點擊的按鈕;點擊打開一個新的片段(我稱之爲NewFragment)。
起初,一切都很好,並沒有拋出異常。我可以儘可能頻繁地點擊按鈕,每當新的片段正確顯示而沒有異常時,onBackPressed就會使用ViewPager返回FootballClubs。但是當我打開我的智能手機時,屏幕方向至少改變了一次,當我單擊按鈕打開新片段(無論我想要顯示哪個片段)時,出現以下異常:
IllegalStateException:無法執行此操作後的onSaveInstanceState
動作我與此代碼替換片段WelcomePage/FootballClubs/NewFragment:
protected void replaceSubfragment(int containerID, Fragment newFragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(containerID, newFragment);
transaction.commit();
}
的異常在器transaction.commit拋出(); 數據筒始終是相同的(在的FrameLayout活動佈局)
一些額外的信息:
如果我更換 器transaction.commit(); 與 transaction.commitAllowingStateLoss(); 我得到這個異常:IllegalStateException異常:活動遭到破壞(雖然我點擊/做同樣的)
所有片段在我FragmentActivity類主要被替換;當你點擊按鈕時,SectionPage的子類會被注意到,並從FragmentActivity調用一個監聽器,這樣FragmentActivity就可以替換這些片段(BaseActivity將監聽器轉換爲FootballClubs片段,並將其傳遞給SectionPage的子類)
由於我只替換了我的FragmentActivity中的片段,因此我不使用getChildFragmentManager(); (據我記憶,這並沒有工作太)
我知道活動被取消和系統重新定向時改變方向,但我不能做這些信息..整個應用程序完美的作品,除了這個按鈕
如果我想顯示按鈕的對話,而不是NewFragment點擊我得到一個IllegalStateException太
在我FragmentActivity,我有一個變量activeModule;在這裏我可以檢查activeModule.isAdded();當拋出異常時,isAdded()返回false ..所以我可以檢查錯誤是否會被拋出
我希望我能描述我的問題。屏幕方向毀了一切,不知道爲什麼.. 如果您需要更多信息請問我..如果您需要一些代碼片段,也許我可以發佈一些東西。
謝謝!