8

mam i aplikacja utworzona za pomocą szuflady nawigacji Activity układu .. I muszę włączyć/wyłączyć niektóre elementy programowoandroid - włączyć i wyłączyć MenuItem o żegludze aktywny układ szuflad

Menu Example

przykład: Chcę wyłączyć id Menu Item nav_item2

próbowałem robić ...

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

I zwróci NullPointerException do mnie ..

próbował także ...

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

z tego samego NullPointerException

ktoś wie coś zrobić?

nav_header_main_activity.xml (wygenerowane z 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 (wygenerowane na stworzeniu układu)

<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> 

Odpowiedz

14

Można uzyskać dostęp menu od NavigationView.getMenu()

Poniżej jest kod:

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

nie mam zmienną navigationView .. jak mogę zrobić, aby go zdobyć? –

+0

w jaki sposób utworzyłeś szufladę nawigacji? możesz opublikować xml –

+0

Zmieniony kod sprawdź to –