2011-09-07 60 views
1

我正在使用兼容庫中的ViewPager。我經常從市場報告中得到這個例外。Android ViewPager IllegalStateException:在onSaveInstanceState後無法執行此操作

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1242) 
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1253) 
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:535) 
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:519) 

任何想法可能會導致它?

+0

查看此[**博客文章**](http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html)以獲取有關此異常拋出原因的更多信息。 –

回答

4

你可能在錯誤的地方打電話給FragmentTransaction.commit()。它需要被稱爲before state is saved

+2

是的,這是真的,但困難的事情是搞清楚在哪裏:) – Erdal

+1

只有你知道,因爲它是你的代碼:) –

+1

@Nicolay但如果我只調用片段onCreate()上的commit()和活動剛創建( onResume()仍然沒有調用)可以狀態保存嗎? – lujop

9

嘗試commitAllowingStateLoss()而不是commit()。閱讀 文檔here

here得到答案。

+2

-1,這是*不是很好的解決這個問題的方法。所有commitAllowingStateLoss()都會避免這種異常,並允許發生狀態丟失。 –

+0

這實際上對我有效; – Eenvincible

+0

commitAllowingStateLoss它不是一個解決方案。也許這次會起作用,但有時你可能會遇到問題來查看片段。 – Ilber

相關問題