ツールバーをアクションバーとして設定したいのですが、ツールバーはレイアウト要素なので、レイアウト内にある必要があります。今、私のレイアウトは私のフラグメントにあります。
レイアウトにツールバーを追加し、フラグメント内で呼び出します:
//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
タイトルなどを設定できるので機能しますが、実際にはこれが欲しいので、アクションバーとして反応させたいです。 setDisplayHomeAsUpEnabled(true)
そのためには、ツールバーをアクションバーに変更する必要があります。
setSupportActionBar(toolbar);
それは私の断片では機能しません...
誰かがツールバーをフラグメントのアクションバーとして機能させるのを手伝ってくれますか?.
ActionBarActivity
は非推奨になったため、最初にgetActivity()
からAppCompatActivity
にアクティビティをキャストする必要があります。以下に例を示します。
((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle();
キャストする必要があるのは、getActivity()
がFragmentActivity
を返し、AppCompatActivity
が必要だからです。
試してください:
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
ActionBarはActivityプロパティです。特定のフラグメントからツールバーを所有アクティビティのActionBarとして設定する場合は、フラグメントを所有するアクティビティ(Fragment.getActivity()
)を取得し、そのActionBarプロパティを設定します。
次に、juseは、ツールバーをActionBarとして設定した後、戻る/戻るボタンを取得した後、ActionBarで最初に説明したのと同じsetDisplayHomeAsUpEnabledメソッドを使用します。
アプリにそのアクティビティ内に複数のフラグメントがある場合、これを明らかに慎重に管理する必要があります。
つかいます
((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title");
Kotlinを使用する場合、これを試してください:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, state: Bundle?): View? {
(activity as AppCompatActivity).setSupportActionBar(your_toolbar)
setHasOptionsMenu(true)
return inflater.inflate(R.layout.your_layout, container, false)
}
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
inflater?.inflate(R.menu.your_menu, menu)
}
フラグメントを保持しているアクティビティがMainActivityであるとしましょう。
行う
MainActivity main = (MainActivity)getActivity();
//You can access all public variable and methods of MainActivity.
//simply call
main.setSupportActionBar(toolbar)
main.getSupportActionBar.setTitle("title");