<< Android-Note
ActionBarSherlockでのNoSuchFieldErroの対処法
最近、流行りのDrawerLayoutを使いたくてサポートライブラリをリビジョン38にアップデートしました。
アップデートしたのはいいんですがActionbarSherlockライブラリを導入していたので、原因は分かりませんが画面下部の設定ボタンを押した際に、次のようなNoSuchFieldErrorというエラーが出てしまいました。
java.lang.NoSuchFieldError: No instance field mFragments of type Landroid/support/v4/app/FragmentManagerImpl; in class Landroid/support/v4/app/Watson; or its superclasses (declaration of 'android.support.v4.app.Watson' appears in /data/app/com.my.app-1/base.apk)
ログの内容からエラーの原因はActionBarSherlockのWatson.javaにあると分かります。
その中にmFragmentsという変数があるんですが、それが未定義になってしまっています。
そこでいろいろ調べた結果,次のようにFragmentsを再定義してやればいいことが分かりました。
public FragmentManagerImpl mFragments = (FragmentManagerImpl) this.getSupportFragmentManager();
Watson.java内でパブリックな変数として宣言しています。こうすることでエラーは無事出なくなりました。
以上、ActionBarSherlockでのNoSuchFieldErroの対処法でした。
© Kaz