Ich habe Probleme bei der Entscheidung, wo das Image eines ImageView im Android NavigationDrawer eingerichtet werden soll.Wann muss ich Resource für ImageView in Android festlegen? NavigationDrawer
Meine Android App hat eine NavigationDrawer, die eine Image in ein paar andere Elemente innerhalb des NavigationDrawer Header-Layout (app:headerLayout="@layout/navdrawer_header
) verschachtelt enthält, und meine navdrawer_header.xml
hat die folgende Struktur:
<LinearLayout android:id="@+id/navdrawer_header">
...
<ImageView android:[email protected]+id/image_view
android:layout_width="match_parent"
android:layout_height="match_parent"/>
...
</LinearLayout>
Ich stelle das Bild (img.jpg
in meinem ziehbar Ordner) über
ImageView imageView = (ImageView) view.findViewById(R.id.image_view);
imageView.setImageResource(R.drawable.img);
Wenn von OnCreate
in meinem MainActivity
genannt, die imageView
ist null und die App stürzt ab. Dasselbe gilt, wenn ich die obigen Zeilen nach OnPostCreate
oder sogar OnStart
verschiebe. Mein Verständnis ist, dass die Ansicht zu diesem Zeitpunkt noch nicht initialisiert ist und daher findViewById
null zurückgibt. Als Workaround habe ich die OnDrawerOpened
Methode überschrieben und meinen Code von oben auf diese Methode verschoben. Das funktioniert gut, aber ich bin ziemlich sicher, dass es nicht der beste Weg ist, da die Methode jedes Mal aufgerufen wird, wenn die Schublade geöffnet wird. Stattdessen würde ich eine Methode benötigen, die nur einmal bei der Erstellung der Schublade aufgerufen wird.
Was ist die beste Vorgehensweise hier, d. H. Wo sollte ich die Ressource eines ImageView, das im NavigationDrawer enthalten ist, festlegen?
Ich habe versucht, view.
und experimentiert mit verschiedenen Werten von view
, zum Beispiel das Weglassen von ihm die Zuordnung der NavigationView
oder DrawerLayout
mit meiner Schublade verbunden, aber es das Problem nicht lösen.
prüfen diese [link] (http://androhub.com/navigation-view-material-design-support-library-tutorial/). –