2017-05-23 4 views
-1

Ich versuche den nächsten Code in der onCreateView Methode meiner Fragment auszuführen:Arbeiten mit NavigationView von Gegenständen in einem Fragment

if (displayedPalabra!=null){ 
     setCardAttributes(displayedPalabra); 
     NavigationView navigationView = (NavigationView) layout.findViewById(R.id.nav_view); 
     navigationView.getMenu().getItem(0).setChecked(true); 
    } 

Aber gibt mir den nächsten Fehler bei der Ausführung:

java .lang.NullPointerException: Versuch virtuelle Methode aufzurufen 'android.view.Menu android.support.design.widget.NavigationView.getMenu()' auf null Objektreferenz

Meine Frage ist: Ist das Layout des Fragments nicht in der Lage, auf die NavigationView von der MainActivity zuzugreifen und somit einen Nullwert abzurufen? Muss ich irgendwie auf andere Weise darauf zugreifen? Der Code sollte selbsterklärend sein, ich versuche nur, das Element dieses Fragments im Navigationsansicht-Menü meiner App als aktiviert zu markieren ... normalerweise mache ich es von der MainActivity, um das Standardfragment zu setzen, aber diesmal wird dieses Fragment von einem anderen Fragment aufgerufen ...

+1

Sie können eine Methode innerhalb Ihrer Aktivität erstellen, um Fragmente zu wechseln und nur diese zu verwenden. Machen Sie es öffentlich, und greifen Sie von innen auf Fragmente zu. – bogdanN

Antwort

2

Ihr Fragment-Layout enthält nicht R.id.nav_view, da es sich um ein Layout innerhalb der Aktivität handelt, nicht um ein Fragment. Mit getActivity() erhalten Sie eine Navigationsansicht von Ihrer Aktivität.

+0

Danke ... ich habe gerade gemerkt, wie doof mein Fehler war, mein Problem ist, dass ich Code von der Hauptaktivität verwendete ... Ich habe die getActivity() verwendet und gelöst, danke für hervorheben. Sobald ich kann, werde ich Ihre Antwort als akzeptiert markieren. – Shohn

+0

Während Sie Navigationsansicht wie folgt zugreifen können, ist dies wahrscheinlich nicht korrekt Ansatz. Ihr Fragment sollte nicht über die Navigationsansicht wissen. Verwenden Sie einen Listener-/Benachrichtigungsmechanismus, um Aktivität oder Logikcontroller zu melden, wenn das ausgewählte Element geändert wurde. –

Verwandte Themen