Android NavigationDrawerに含まれるImageViewの画像をどこに設定するかを決定するのに問題があります。Android NavigationDrawerでImageViewのリソースを設定するタイミング
私のAndroidアプリはNavigationDrawerヘッダーのレイアウト(app:headerLayout="@layout/navdrawer_header
)内の他の要素のカップルの中にネストされたImageViewのが含まれているNavigationDrawerを持っている、と私navdrawer_header.xml
は、以下の構造を有する:
<LinearLayout android:id="@+id/navdrawer_header">
...
<ImageView android:[email protected]+id/image_view
android:layout_width="match_parent"
android:layout_height="match_parent"/>
...
</LinearLayout>
私は画像を設定していますが
ImageView imageView = (ImageView) view.findViewById(R.id.image_view);
imageView.setImageResource(R.drawable.img);
を経由して(私の描画可能なフォルダにimg.jpg
)私MainActivity
内OnCreate
から呼び出された場合は、imageView
はnullになり、アプリケーションがクラッシュします。上記の行をOnPostCreate
またはOnStart
に移動する場合も同じです。 私の理解では、その時点でまだビューが初期化されていないため、findViewById
がnullを返します。回避策として、OnDrawerOpened
メソッドを上書きし、上のコードをそのメソッドに移動しました。 これはうまくいきますが、引き出しが開かれるたびにこのメソッドが呼び出されるので、それが最善の方法ではないことは確かです。代わりに、私は引き出しの作成時に一度呼び出されるメソッドが必要になります。
ここでベストプラクティスは何ですか?つまり、NavigationDrawerに含まれるImageViewのリソースはどこに設定する必要がありますか?
私はそれに割り当てることによってview.
を省略しようと、例えばview
の異なる値と実験してきたNavigationView
や私の引き出しに関連したDrawerLayout
が、それは問題を解決していません。
は、この[リンク](http://androhub.com/navigation-view-material-design-support-library-tutorial/)を確認してください。 –