Android 是否可以对所有活动使用一个menu.xml布局文件?

Android 是否可以对所有活动使用一个menu.xml布局文件?,android,android-layout,menuitem,android-xml,android-menu,Android,Android Layout,Menuitem,Android Xml,Android Menu,我试图在我的活动中建立一个菜单导航系统。我将在应用程序中使用几个活动作为示例。我有一个地图活动,登录和列表活动 按下“物理菜单”按钮后,“地图”活动可以导航到这些活动: 登录并列出。地图图标/按钮不会出现在菜单中,因为它已在“地图”活动中 同样地,列表可以转到登录和映射,但不能转到它本身。与登录相同,它可以进入地图和列表,但不能进入自身 现在,我为每个活动都有一个单独的菜单布局文件,其中包含基本相同的内容,但例如,“地图”活动将不包含“地图”菜单项 <menu xmlns:android=

我试图在我的活动中建立一个菜单导航系统。我将在应用程序中使用几个活动作为示例。我有一个地图活动,登录和列表活动

按下“物理菜单”按钮后,“地图”活动可以导航到这些活动: 登录并列出。地图图标/按钮不会出现在菜单中,因为它已在“地图”活动中

同样地,列表可以转到登录和映射,但不能转到它本身。与登录相同,它可以进入地图和列表,但不能进入自身

现在,我为每个活动都有一个单独的菜单布局文件,其中包含基本相同的内容,但例如,“地图”活动将不包含“地图”菜单项

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/list" android:title="List" android:icon="@drawable/ic_menu_list"/>
  <item android:id="@+id/login" android:title="Login" android:icon="@drawable/ic_menu_login"/>
</menu>

然后列表将如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:id="@+id/mapViewList" android:title="Map View" android:icon="@drawable/ic_menu_map"/>
  <item android:id="@+id/loginList" android:title="Login" android:icon="@drawable/ic_menu_login"/>
</menu>

因此,我的问题是,我是否可以使用一个菜单布局文件来包含每个菜单项,即使某些活动不使用该项?将多个活动指向同一菜单文件是否安全

也就是说,这样可以吗?请记住,并非所有项目都将在活动中使用,例如仅在地图中显示的刷新项目

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add" android:title="Add" android:icon="@drawable/ic_menu_add"/>
    <item android:id="@+id/mapView" android:title="Map View" android:icon="@drawable/ic_menu_map"/>
    <item android:id="@+id/list" android:title="List" android:icon="@drawable/ic_menu_list"/>
    <item android:id="@+id/refresh" android:title="Refresh" android:icon="@drawable/ic_menu_refresh"/>
    <item android:id="@+id/login" android:title="Login" android:icon="@drawable/ic_menu_login"/>
    <item android:id="@+id/logout" android:title="Logout" android:icon="@drawable/ic_menu_logout2"/>
</menu>

是的,让多个活动使用相同的菜单XML是一样的

请记住,所有选项都将显示给用户,即使您不使用其中的一些选项。单击时,您可以使它们不执行任何操作,但它们仍然可见

您可以重写onPrepareOptions菜单()以隐藏其中的一些,例如map one:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.findItem(R.id.mapView).setVisible(false);
    return true;
}

去争取吧只需确保隐藏不用于混淆用户的元素。如果我只重写OnPrepareOptions功能表,这会起作用吗?如果我重写onPrepare方法会怎么样?我做了如下操作:menu.clear();menu.add(0,R.id.add,menu.NONE,“add”).setIcon(R.drawable.ic_menu_add);menu.add(0,R.id.mapView,menu.NONE,“Map”).setIcon(R.drawable.ic\u menu\u Map)@约翰纳塔诺:那也行。在你的情况下,你只需要展示你想要的。我给的代码隐藏了你没有的代码。我完成的最终结果相同:menu.clear()然后是menu.add(),我在其中添加了每个项目。这是一个合适的方法还是我应该这样做?谢谢。只是想确定一下,知道我是否朝着正确的方向前进=)