1. ホーム
  2. android

[解決済み] Fragment ActionBarCompatの内部からgetSupportActionBarを取得する。

2022-05-17 08:14:26

質問

新しいプロジェクトで AppCompat/ActionBarCompatv7 のサポート・ライブラリです。私はどのようにしたら getSupportActionBar を使用する方法を考えています。フラグメントをホストする私のアクティビティは ActionBarActivity を拡張していますが、フラグメントのための同様のサポートクラスは見当たりません。

私のフラグメントの中から

    public class CrimeFragment extends Fragment {
          //...

          getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment

          //...
    }

使用するためのgoogleページ( http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html ) によると v4 フラグメントには変更を加えるべきではありません。をキャストする必要がありますか? getActivity() の呼び出しを ActionBarActivity ? デザイン性が低いように思います。

どのように解決するのですか?

その後 Fragment.onActivityCreated(...) の後、getActivity()でアクセスできる有効なアクティビティが得られます。

ActionBarActivityにキャストして、getSupportActionBar()にコールする必要があります。

((AppCompatActivity)getActivity()).getSupportActionBar().setSubtitle(R.string.subtitle);

キャストは必要です。デザインが悪いのではなく、後方互換性があるのです。