Android Gingerbreadを対象とするアプリケーションの1つでも、アクションバーとフラグメントの組み合わせを使用する必要があります。そのため、v7サポートライブラリのアクションバーとv4サポートライブラリのフラグメントを使用しましたそしてFragmentActivityで私のクラスを拡張します。
行を入力するとエラーが発生する
actionbar = getSupportActionBar();
エラーはgetSupportActionBar()がタイプmyFragmentClass(私のクラス名)に対して未定義であることを示しています。コードは、サポートライブラリがなくても完全に機能します。私の問題に対する解決策はありますか?
ありがとう!
フラグメント付きのActionbarを使用するには、FragmentActivityではなくActionBarActivityを拡張する必要があります。
V7 appcompatライブラリーを使用している場合、アクティビティはFragmentActivityのサブクラスであるActionBarActivityを拡張する必要があります(詳細については、アクションバーの追加をご覧ください)。
詳細は、以下のページで確認できます。上記の行は、以下のページ(最後の段落)から取得されています。 http://developer.Android.com/training/basics/fragments/creating.html
編集-これはバグではありません。その知識の欠如。時々、基本的なことがはっきりしない。私は現在、Androidウェブサイトからも学んでいます。それが私があなたに答えを与える方法です。
onAttach()メソッドでこのコードを記述します。
_actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
_
ActionBarActivityは非推奨です。使用する
actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
私も使用してみました:
actionbar = getActivity().getSupportActionBar();
そして私がこれをするまでそれは機能しませんでした:
ActionBar actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
それで、MainActivityにキャストするとうまくいきました。
for Android.support.v7
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
//than next for example
actionBar.setDisplayHomeAsUpEnabled(true);
Fragment内でActionBarを呼び出すには、これを使用します。
actionbar = getActivity().getSupportActionBar();
フラグメントにはActionBarはなく、Activityがあります。そのため、このように呼ぶ必要があります。
私はActionBarActivityを拡張して試してみて、AndroidManifest.xmlにいくつかの変更を加えました
<activity Android:name="yourActionbarActivity"
Android:theme = "@ style/Theme.AppCompat.Light">
そしてそれは私にとってはうまくいきます