The default result of {android.preference.PreferenceActivity#isValidFragment PreferenceActivity.isValueFragment} becomes false instead of true.引用: http://developer.android.com/reference/android/os/Build.VERSION_CODES.html#KITKAT
エラーメッセージをよく見るとこんな行があった。
01-24 00:35:10.461: E/AndroidRuntime(29584): Caused by: java.lang.RuntimeException: Subclasses of PreferenceActivity must override isValidFragment(String) to verify that the Fragment class is valid! com.fb.fumotrim.ui.FTPreferenceActivity has not checked if fragment com.fb.fumotrim.ui.FTPreferenceActivity$PF_System is valid.PreferenceActivityのサブクラスを作る時は、isValidFragment(String)をオーバーライドして、PreferenceFragmentがvalidかどうか検証すれよってことだ。
それで、どうやって書けばいいかと調べていたら、stackoverflowに書いてあった。流石stackoverflow!
http://stackoverflow.com/questions/19973034/isvalidfragment-android-api-19
protected boolean isValidFragment (String fragmentName) { if(StockPreferenceFragment.class.getName().equals(fragmentName)) return true; return false; }こんなかんじの内容にすれば良いらしい。フラグメント名をチェックするだけ。proguardを使っている場合は、クラス名の比較に失敗するようなので、proguard.cfgに以下のような例外を追加すると良い。
-keep public class com.fullpackage.MyPreferenceFragment
0 件のコメント:
コメントを投稿