うさがにっき

読書感想文とプログラムのこと書いてきます

Ecilpseで自動生成されたappCompatを使ってfragmentを使った時に、java.lang.IllegalStateException

概要

Eclipseで自動生成されたappCompatを使ってgetTargetFragment,setTargetFragmentを使った場合、HOMEボタン押下タイミングで以下のエラーをはいて落ちる


04-18 09:52:28.889: E/AndroidRuntime(7598): FATAL EXCEPTION: main
04-18 09:52:28.889: E/AndroidRuntime(7598): java.lang.IllegalStateException: Failure saving state: BestChallengeListCategoryDialog{42fd2468 #3} has target not in fragment manager: BestChallengeListFragment{42cfb3f0}
04-18 09:52:28.889: E/AndroidRuntime(7598): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1693)
04-18 09:52:28.889: E/AndroidRuntime(7598): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:546)
なにやらデータ保存時に落ちている模様…

解決法

Eclipseが自動生成するappCompatで使っているSupportv4ライブラリが古いことが理由
appCompat下のlib下にいるandroid-support-v4.jarを{?ANDROID_HOME}/extras/android/support/v4/android-support-v4.jarにおきかえる