0

アクティビティ全体でメニューナビゲーションシステムを構築しようとしています。例として、アプリケーションでいくつかのアクティビティを使用します。マップアクティビティ、ログイン、リストアクティビティがあります。

マップアクティビティは、物理メニューボタン[ログインとリスト]を押し​​た後、これらのアクティビティに移動できます。マップアイコン/ボタンはすでにマップアクティビティにあるため、メニューには表示されません。

同様に、リストはログインとマップに移動できますが、それ自体には移動できません。ログインの場合と同じように、マップとリストに移動できますが、それ自体には移動できません。

現在、基本的に同じものを含むアクティビティごとに個別のメニューレイアウトファイルがありますが、たとえば、マップアクティビティにはマップメニュー項目が含まれていません。

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

したがって、私の質問は、一部のアクティビティでそのアイテムを使用しない場合でも、1つのメニューレイアウトファイルを使用してすべてのメニューアイテムを含めることができるかどうかです。同じメニューファイルを指す複数のアクティビティを持つことは安全ですか?

つまり、これは大丈夫ですか?マップにのみ表示される更新アイテムなどのアクティビティですべてのアイテムが使用されるわけではないことに注意してください。

<?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 に答える