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>
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 –
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); –
Danke, es funktioniert ohne Bezug auf die unmittelbare Elternschaft, wie Sie gesagt haben. –