菜单项显示两次

时间:2018-08-29 08:10:51

标签: java android

screenshot of my app

XML:

<?xml version="1.0" encoding="utf-8"?>

<group>
    <item
        android:id="@+id/share"
        android:title="Share"/>
    <menu>
        <item android:title="Share Contact"
            android:id="@+id/sharecontact" />
        <item android:title="Share Profile"
            android:id="@+id/shareprofile"/>
        <item android:title="Share Conversation"
            android:id="@+id/sharechat"/>
    </menu>
</group>

<group>
    <item
        android:id="@+id/options"
        android:title="Options"/>
    <menu>
        <item android:title="Mute Notifications"
            android:id="@+id/mutenotifications" />
        <item android:title="Pin"
            android:id="@+id/pin" />
        <item android:title="Archieve Chat"
            android:id="@+id/archievechat" />
        <item android:title="Create Shortcut"
            android:id="@+id/createshortcut" />
        <item android:title="Clear Chat"
            android:id="@+id/clearchat" />
        <item android:title="Backup Chat"
            android:id="@+id/backupchat" />
    </menu>
</group>

<group>
    <item
        android:id="@+id/more"
        android:title="More"/>
    <menu>
        <item android:title="Ignore Contact"
            android:id="@+id/ignorecontact" />
        <item android:title="Report Contact"
            android:id="@+id/reportcontact" />
        <item android:title="Delete Contact"
            android:id="@+id/deletecontact" />
        <item android:title="Block Contact"
            android:id="@+id/blockcontact" />
    </menu>
</group>

<group>
<item
    android:id="@+id/privacy"
    android:title="Privacy"/>
<menu>
    <item android:title="Screenshot Awareness"
        android:id="@+id/screenshotawareness" />
    <item android:title="Deleting Messages Awareness"
        android:id="@+id/deletingmessagesawareness" />
    <item android:title="LastSeen"
        android:id="@+id/lastseen" />
    <item android:title="Online"
        android:id="@+id/online" />
    <item android:title="Seen"
        android:id="@+id/seen" />
    <item android:title="Copy Awareness"
        android:id="@+id/copy" />
</menu>
</group>

Java代码:

   @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.profile, menu);
    return true;
}

    public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();
    Fragment fragment = null;
    if (id == R.id.share) {

    } else if (id == R.id.options) {

    } else if (id == R.id.privacy) {

    } else if (id == R.id.more) {

    }
    return true;
}

为什么菜单项显示两次而不是一次?我确实调查了Google的代码,但是看起来一样。

2 个答案:

答案 0 :(得分:2)

您必须使用 <menu> 标签启动菜单,并且层次结构必须如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/trip_details">
    <menu>
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_dashboard"
            android:icon="@drawable/dashboard1_icons"
            android:title="@string/dashboard"
            android:checked="true"/>
        <item
            android:id="@+id/nav_my_trip"
            android:icon="@drawable/ic_trip_icon"
            android:title="@string/my_trip" />
        <item
            android:id="@+id/nav_expenses"
            android:icon="@drawable/ic_expense"
            android:title="@string/expense" />
    </group>
    </menu>
</item>
<item android:title="@string/help_and_support">
    <menu>
        <group android:checkableBehavior="single">
                <item
                    android:id="@+id/nav_help"
                    android:icon="@drawable/ic_help"
                    android:title="@string/helpdesk" />
                <item
                    android:id="@+id/nav_change_language"
                    android:icon="@drawable/ic_language"
                    android:title="@string/change_language"
                    android:visible="true"/>
                <item
                    android:id="@+id/nav_logout"
                    android:icon="@drawable/logout_icons"
                    android:title="@string/log_out" />
            <item
                android:id="@+id/nav_version_name"
                android:title=""
                app:actionLayout="@layout/menu_version_view" />
        </group>
    </menu>
</item>
</menu>

这只是我的带有组菜单的示例。

尝试一下。如果可行,请在这里更新。

答案 1 :(得分:0)

您应将所有groupmenu标签放入主item标签内。您的menu.xml应该是这样的:

<item
    android:id="@+id/share"
    android:title="Share">
    <menu>
        <group>
            <item
                android:id="@+id/sharecontact"
                android:title="Share Contact" />
            <item
                android:id="@+id/shareprofile"
                android:title="Share Profile" />
            <item
                android:id="@+id/sharechat"
                android:title="Share Conversation" />

        </group>
    </menu>
     ...

</item>

依此类推...