菜单的行为不符合预期

时间:2015-06-28 19:43:18

标签: android android-menu

这是我的菜单xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_menu">

<item
    android:icon="@drawable/ic_local_airport_white_48dp"
    android:id="@+id/GooglePlayMenu"
    android:title="Title 1">
    <menu>
        <item
            android:id="@+id/Sign_in_drawer"

            android:icon="@drawable/games_controller_grey"
            android:title="Sign in" />
        <item
            android:id="@+id/ach"
            android:icon="@drawable/games_achievements"
            android:title="Achievements" />
    </menu>
</item>

<item
    android:icon="@drawable/ic_local_airport_white_48dp"

    android:title="Title 2">
    <menu>
        <item
            android:id="@+id/quizStart25"

            android:icon="@drawable/ic_local_airport_white_48dp"
            android:title="25 Questions" />
        <item
            android:id="@+id/quizStart10"
            android:icon="@drawable/ic_local_airport_white_48dp"
            android:title="10 Questions" />
    </menu>
</item>

<group android:checkableBehavior="single">
    <item
        android:id="@+id/gallery"

        android:icon="@drawable/ic_photo_library_white_48dp"
        android:title="Gallery" />
    <item
        android:id="@+id/stats"
        android:icon="@drawable/ic_toc_white_48dp"
        android:title="Statistics" />
    <item
        android:id="@+id/store"
        android:icon="@drawable/ic_shop_white_48dp"
        android:title="Store" />
    <item
        android:id="@+id/settings"
        android:icon="@drawable/ic_settings_white_48dp"
        android:title="Settings" />
    <item
        android:id="@+id/about"
        android:icon="@drawable/ic_info_white_48dp"
        android:title="About" />

</group>

<item android:title="Title 3">
    <menu>
        <item
            android:id="@+id/help_drawer"
            android:icon="@drawable/ic_help_white_48dp"
            android:title="Help" />
        <item
            android:id="@+id/report"
            android:icon="@drawable/ic_report_problem_white_48dp"
            android:title="Contact Developer" />
        <item

            android:title="Google+ Community" />

    </menu>
</item>

我有另一个类似但在onPrepareOptionsMenu的菜单我想决定显示哪个菜单。现在开始测试上面的菜单,我有以下内容:

n = (NavigationView) findViewById(R.id.nav);
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    Log.d("NICK","onPrepareOptionsMenu");


   getMenuInflater().inflate(R.menu.menu1, n.getMenu());
   //n.getMenu().add("Random item");

    return super.onPrepareOptionsMenu(menu);

}

这将显示我的菜单,但直到标题3.标题3及其子项目显示为我期望它们。任何当我取消注释行n.getMenu().add("Random item");时,标题3及其子项与&#34;随机项&#34;一起显示。我想知道为什么菜单会像这样?有什么我做得不好吗?

1 个答案:

答案 0 :(得分:0)

在您的false中返回onPrepareOptionsMenu,以便一直调用它,如果您有onCreatOptionsMenu,那么您在那里返回true,因此不会一直调用< / p>

同样为了一般用途,onPrepareOptionsMenu(Menu menu)中的菜单是传递给ActivityFragment的菜单;如果你想一直保持充气菜单,我建议你在onCreatOptionsMenu进行,然后返回false,但你可以做

menu = getMenuInflater().inflate(R.menu.menu1, n.getMenu());