gpt4 book ai didi

android - 什么时候在 Android NavigationDrawer 中为 ImageView 设置 Resource

转载 作者:行者123 更新时间:2023-11-29 00:04:03 25 4
gpt4 key购买 nike

我无法决定在何处设置 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 在我的 drawable 文件夹中)

ImageView imageView = (ImageView) view.findViewById(R.id.image_view);
imageView.setImageResource(R.drawable.img);

如果从我的 MainActivity 中的 OnCreate 调用,imageView 将为空并且应用程序崩溃。如果我将以上行移动到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com