【发布时间】:2015-10-06 19:19:18
【问题描述】:
Android Studio 1.4
我在activity_main.xml 中有一个工具栏。
我有一个名为 main.xml 的菜单,它会膨胀,只显示 1 个图标。
当用户点击打开一个片段时。我还有另一个菜单 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);
}
非常感谢您的任何建议,
【问题讨论】:
-
“我认为在工具栏上增加一个新菜单会删除现有菜单”这是无效的,总菜单项 = MenuItemsOfActivity+MenuItemsOfFragment
-
只需将
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); }移动到 FirstFragment 中并在 FirstFragment 的 onCreate() 中执行 setHasOptionsMenu(true) .. 这应该可以工作 -
无需在活动中膨胀菜单..只需按片段进行