[Qiita] FragmentのonAttach(Context context)が呼ばれない
※この記事は以前Qiitaに投稿されていた古い記事です はじめに FragmentのonAttach(Context context)メソッドを使うときに、少しハマったのでメモ。 onAttach(Activity activity)とonAttach(Context context) API Level 23より前では、onAttach(Activity activity)を使っていたのですが、このメソッドはAPI Level 23で非推奨になりました。 これの代わりにonAttach(Context context)というメソッドが登場したので、API Level 23以上ではこれを使うことになります。 Support LibraryのFragmentの場合 android.support.v4.app.Fragmentを継承しているFragmentの場合、onAttach(Context context)が実装されているので、以下のようにOverrideしても問題無く呼ばれます。 @Override public void onAttach ( Context context ) { super . onAttach ( context ) ; } 普通のFragmentの場合 Support LibraryのFragmentで普通に使えていたので、同じようにandroid.preference.PreferenceFragmentでonAttach(Context context)をOverrideしたら、Android 6.0未満の端末では残念ながら呼ばれませんでした。 onAttach(Context context)はAPI Level 23で新しく実装されたメソッドなので当然ですね。 PreferenceFragmentがSupport LibraryのFragmentを継承しているものではないことを忘れていたので、少し悩んでしまいました。 結論、普通のFragmentの場合は Android 6.0以上だと、どっちも呼ばれますが、 onAttach(Context context) onAttach(Activity activity) Android 6.0未満だと以前のonAttach