2017-01-24 22 views
0

У меня есть NavigationView в моем приложении. Внутри меню для NavView, у меня есть два подменю:Определение SubMenu из MenuItem

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/nav_group_one" 
     android:title="SubMenu A"> 
     <menu> 
      <item 
       android:checkable="true" 
       android:title="One"/> 
      <item 
       android:checkable="true" 
       android:title="Two"/> 
     </menu> 
    </item> 

    <item 
     android:id="@+id/nav_group_two" 
     android:title="SubMenu B"> 
     <menu> 
      <item 
       android:checkable="true" 
       android:title="Three"/> 
      <item 
       android:checkable="true" 
       android:title="Four"/> 
     </menu> 
    </item> 
</menu> 

В моей деятельности onNavigationItemSelected()-х я хотел бы быть в состоянии выяснить, какие подменю выбранного элемента в Как я сделал бы это.?

ответ

0

До сих пор я не нашел существующее решение в настоящее время, однако, я нашел обходной путь:

Чтобы решить эту проблему с минимальными дополнительными накладными расходами XML, завернуть каждый набор элементов подменю в группе, с Id:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/nav_group_one" 
     android:title="SubMenu A"> 
     <menu> 
      <group id="@+id/nav_group_wrapper_one"> 
       <item 
        android:checkable="true" 
        android:title="One"/> 
       <item 
        android:checkable="true" 
        android:title="Two"/> 
      </group> 
     </menu> 
    </item> 

    <item 
     android:id="@+id/nav_group_two" 
     android:title="SubMenu B"> 
     <menu> 
      <group id="@+id/nav_group_wrapper_two"> 
       <item 
        android:checkable="true" 
        android:title="Three"/> 
       <item 
        android:checkable="true" 
        android:title="Four"/> 
      </group> 
     </menu> 
    </item> 
</menu> 

Таким образом, можно просто вызвать item.getGroupId() вывести подменю оно содержится внутри.