アクティビティのmain_fragment_containerを置き換えるナビゲーションドロワーを持つアクティビティがあります。フラグメントの1つが表示されたら、ツールバーのレイアウトを変更し、それにスピナーを追加します(フラグメントが非表示になったら削除します)。
私のレイアウトは次のようになります。
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:sothree="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/main_parent_view"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:fitsSystemWindows="true">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
sothree:theme="@style/AppTheme.ActionBar" />
<Android.support.v4.widget.DrawerLayout
Android:id="@+id/drawer_layout"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- Main layout -->
<FrameLayout
Android:id="@+id/main_fragment_container"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<!-- Nav drawer -->
<fragment
Android:id="@+id/fragment_drawer"
Android:name="com.idob.mysoccer.ui.DrawerFragment"
Android:layout_width="@dimen/navigation_drawer_width"
Android:layout_height="match_parent"
Android:layout_gravity="left|start" />
</Android.support.v4.widget.DrawerLayout>
何を達成しようとしているのかわかりませんが、可能であれば、フラグメントをツールバーに置き換えるのではなくカスタマイズさせることで、これにアプローチする必要があると思います。フラグメントは、必要に応じてツールバーのビューを非表示/表示できます。
setHasOptionsMenu(true);
をフラグメントOnCreateView()
に追加し、onOptionsMenuCreated()
をオーバーライドします
このような:
_@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.result_list, container, false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.this_frag_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
_
ツールバーでより具体的なことを行う必要がある場合は、次を使用してインスタンスを取得できます
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);