如何获取 xml 中的子菜单?

vvT*_*hat 3 android

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/item_first"
        android:showAsAction="always"
        android:visible="true">
    </item>
    <item
        android:id="@+id/item_second"
        android:showAsAction="always"
        android:visible="true">
    </item>
    <item
        android:id="@+id/item_third"
        android:showAsAction="always"
        android:visible="true">

        <menu 
            android:id="@+id/menu_revice" >

            <item
                android:id="@+id/ap_none"
                android:showAsAction="never"
                android:title="Item in SubMenu 1"/>
            <item
                android:id="@+id/ap_mid"
                android:showAsAction="never"
                android:title="Item in SubMenu 2"/>

        </menu>
    </item>

</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的 menu.xml 文件。我需要在“item_thrid”中获取子菜单“menu_revice”。然后我在 onCreate()、onCreateOptionsMenu()、onOptionsItemSelected()、onPrepareOptionsMenu() 中尝试:

Menu MainMenu

//try 1
Menu subMenu = (Menu)findViewById(R.id.menu_revice); // nullPointerException

// try 2
SubMenu subMenu = (SubMenu)findViewById(R.id.menu_revice); // nullPointerException
Run Code Online (Sandbox Code Playgroud)

为什么会发生nullpointerException..?我不知道如何获得子菜单。请告诉我如何...谢谢。

vin*_*ius 5

onCreateOptionsMenu(Menu menu)

menu.getItem(0).getSubMenu(); //submenu for item in position 0
Run Code Online (Sandbox Code Playgroud)

编辑:

参考:http://developer.android.com/reference/android/view/MenuItem.html#getSubMenu()