我无法决定在哪里设置 Android NavigationDrawer 中包含的 ImageView 的图像。
我的 Android 应用程序有一个 NavigationDrawer,其中包含嵌套在 NavigationDrawer header 布局 (app:headerLayout="@layout/navdrawer_header
) 内的几个其他元素中的 ImageView,以及我的 navdrawer_header .xml
具有以下结构:
<LinearLayout android:id="@+id/navdrawer_header">
...
<ImageView android:id=@+id/image_view
android:layout_width="match_parent"
android:layout_height="match_parent"/>
...
</LinearLayout>
我正在通过设置图像(img.jpg
在我的可绘制文件夹中)
ImageView imageView = (ImageView) view.findViewById(R.id.image_view);
imageView.setImageResource(R.drawable.img);
如果从我的 MainActivity
内的 OnCreate
调用,imageView
将为 null 并且应用程序崩溃。如果我将上面的行移至 OnPostCreate
甚至 OnStart
,效果也是一样。
我的理解是,该 View 当时尚未初始化,因此 findViewById 返回 null。作为解决方法,我覆盖了 OnDrawerOpened
方法,并将我的代码从上面移至该方法。
这工作得很好,但我很确定这不是最好的方法,因为每次打开抽屉时都会调用该方法。相反,我需要一个仅在创建抽屉时调用一次的方法。
这里的最佳实践是什么,即我应该在哪里设置 NavigationDrawer 中包含的 ImageView 的资源?
我尝试省略 view.
并尝试使用 view
的不同值,例如通过为其分配 NavigationView
或 DrawerLayout
与我的抽屉关联,但它不能解决问题。
最佳答案
试试这个:
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View view = navigationView.getHeaderView(0);
ImageView imageView = (ImageView) view.findViewById(R.id.image_view);
imageView.setImageResource(R.drawable.img);
关于android - 何时在 Android NavigationDrawer 中为 ImageView 设置 Resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322825/