0

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

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

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

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

<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>

然后 List 将是这样的:

<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>
4

1 回答 1

1

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

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

您可以覆盖 onPrepareOptionsMenu() 以隐藏其中一些,例如地图之一:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    menu.findItem(R.id.mapView).setVisible(false);
    return true;
}
于 2013-03-26T17:53:57.593 回答