Android Studio 1.4
我有一个工具栏,该工具栏需要在其中填充activity_main.xml
。我有一个名为main.xml
充气的菜单,上面只有一个图标可以显示。
当用户单击以打开片段时。我有另一个friends.xml
带有2个图标的菜单。
当我在片段中向好友菜单充气时,它仍显示菜单中的图标main.xml
。
我认为夸大工具栏上的新菜单会删除现有菜单。
这是该片段的屏幕截图,您可以看到查找图标仍然存在。
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/tbMain"
layout="@layout/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
这是我在MainActivity.java中创建菜单的代码
private void setupToolBar() {
mToolbar = (Toolbar)findViewById(R.id.tbMain);
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
在我的片段中,我有这个,如您所见,我正在膨胀friends.xml菜单。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.friends, menu);
}
非常感谢您的任何建议,
我不确定您是否可以使用onCreateOptionsMenu()
。我认为您最好的选择是onPrepareOptionsMenu()
。
您可以通过仅编写getActivity().invalidateOptionsMenu()
Fragment的来强制Android刷新选项菜单onResume()
。
因此,您onPrepareOptionsMenu()
将看起来像:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.clear(); //remove all items
getActivity().getMenuInflater().inflate(R.menu.menu_fragment, menu);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句