2017-02-09 1 views
0

Wie kann ich auf die Schaltflächen der RelativeLayout-Ansicht in NavigationView zugreifen? Allerdings kann ich auf die TextViews innerhalb der Header-Ansicht zugreifen mit:So greifen Sie auf die Schaltflächen zu, die in NavigationView untergeordnet sind

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
View header=navigationView.getHeaderView(0); 
TextView tvUserName = (TextView)header.findViewById(R.id.drawer_user_name); 

Gibt es die gleiche Weise, um auf die Schaltflächen auch zugreifen? hier ist mein Layout ->Image of the layout from which i want to access buttons

und hier ist xml des Layouts:

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true"> 

    <RelativeLayout 
     android:id="@+id/rl" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <include layout="@layout/nav_header_main" 
      android:id="@+id/header"/> 

     <Button 
      android:id="@+id/btn1" 
      android:layout_below="@id/header" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Button1" 
      /> 
     <Button 
      android:id="@+id/btn2" 
      android:layout_below="@id/btn1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Button2"/> 
     <Button 
      android:id="@+id/btn3" 
      android:layout_below="@id/btn2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Button3"/> 
     <Button 
      android:id="@+id/btn4" 
      android:layout_below="@id/btn3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Button4"/> 
     <Button 
      android:id="@+id/btn5" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:text="Button5"/> 
    </RelativeLayout> 

</android.support.design.widget.NavigationView> 

Antwort

-1

Ja, können Sie einfach anrufen

Button btn1 = (Button)navigationView.findViewById(R.id.btn1); 

oder einfach

Button btn1 = (Button)findViewById(R.id.btn1); 
+0

Leider diese Fehler war von NavigationView navigationView = (NavigationView) findViewById (R.id.nav_view); Ansicht header = navigationView.getHeaderView (0); TextView tvUserName = (Textansicht) header.findViewById (R.id.drawer_user_name); und ich bekomme es immer noch: java.lang.RuntimeException: Kann nicht starten ComponentInfo {in.mbedded.mynav/in.mbedded.mynav.MainActivity}: java.lang.NullPointerException: Versuch, virtuelle Methode 'android.view aufzurufen. View android.view.View.findViewById (int) 'auf einem Null-Objekt Referenz –

+0

Ich bin mir nicht sicher, ich verstehe, was Sie mit diesem Kommentar meinen, sorry! Sie müssen nicht das direkte übergeordnete Element der Ansicht haben, um die Ansicht zu finden. Um den Benutzernamen Textansicht zu erhalten, können Sie einfach anrufen TextView tvUserName = (TextView) findViewById (R.id.drawer_user_name); –

+0

Danke, es funktioniert ohne Bezug auf die unmittelbare Elternschaft, wie Sie gesagt haben. –

Verwandte Themen