8

У меня есть и приложение создано с помощью Activity Разметка панели навигации .. И мне нужно включить/отключить некоторые элементы программноандроид - Включение и отключение MenuItem на панели навигации активность Layout

Menu Example

Пример: Я хочу, чтобы отключить меню Item ID nav_item2

я пытался сделать ...

MenuItem nav_item2 = (MenuItem)findViewById(R.id.nav_item2); 
nav_item2.setEnabled(false); 

И вернуть NullPointerException мне ..

Также пробовал ...

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    nav_item2 = menu.findItem(R.id.nav_item2); 
    return true; 
} 

с тем же NullPointerException

кто-то знает что-то делать?

nav_header_main_activity.xml (Сгенерировано с Creation Layout)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    android:gravity="bottom" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="199dp" 
     android:layout_height="72dp" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:src="@drawable/ciag" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="CIAg" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="[email protected]" /> 

</LinearLayout> 

main_activity_navigation_drawer.xml (генерируется на создание макета)

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_save" 
     android:icon="@android:drawable/ic_menu_save" 
     android:enabled="false" 
     android:title="@string/nav_save" /> 
    <item 
     android:id="@+id/nav_graph" 
     android:icon="@drawable/chart_bar" 
     android:enabled="false" 
     android:title="@string/nav_graph" /> 
    <item 
     android:id="@+id/nav_send" 
     android:icon="@drawable/ic_menu_send" 
     android:title="Enviar" /> 
</group> 

<item android:title="Configurações"> 
    <menu> 
     <item 
      android:id="@+id/nav_manage" 
      android:icon="@drawable/ic_menu_manage" 
      android:enabled="false" 
      android:title="@string/nav_manage" /> 
     <item 
      android:id="@+id/nav_support" 
      android:icon="@android:drawable/ic_menu_help" 
      android:title="@string/nav_support" /> 
    </menu> 
</item> 

ответ

14

Вы можете получить доступ к меню от NavigationView.getMenu()

Ниже код:

NavigationView navigationView= findViewById(R.id.nav_id_in_layout) 

Menu menuNav=navigationView.getMenu(); 
MenuItem nav_item2 = menuNav.findItem(R.id.nav_item2); 
nav_item2.setEnabled(false) 
+0

я не имею переменную navigationView .. как я могу сделать, чтобы получить его? –

+0

как вы создали свой навигационный ящик? вы можете разместить xml –

+0

Отредактированный код код –