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の対処法でした。

関連項目
プライバシーポリシー