llf2580 2023-03-14 17:59 采纳率: 66.7%
浏览 79
已结题

Android Studio:设置fragment里ImageView显示的图片

ImageView的setImageResource()方法显示不了图片怎么回事
我利用fragment和ViewPager实现了一个底部导航栏,fragment内控件的事件响应写在fragment的onActivityCreated()方法里
定义了一个数组用来存放drawable的资源,一共有9幅图片
在SharedPreferences里存放有一个int型数据head,取值为1-9,分别对应不同的图片资源,显示在ImageView里
设置布局时,ImageView里显示的是第一幅图片(R.drawable.head_1)

// ivHead是显示头像的,SharedPreference存了头像编号(1-9)
ImageView ivHead = getActivity().findViewById(R.id.mine_imageViewHead);
int[] headResource = new int[]{R.drawable.head_1, R.drawable.head_2, R.drawable.head_3, R.drawable.head_4, R.drawable.head_5,
                R.drawable.head_6, R.drawable.head_7, R.drawable.head_8, R.drawable.head_9};//头像数组
SharedPreferences sp = getActivity().getSharedPreferences("LoginSp", Context.MODE_PRIVATE);
ivHead.setImageResource(headResource[sp.getInt("head",0)-1]);

上面的代码是写在fragment 的onActivityCreated()方法里的,利用Toast显示sp.getInt("head",0),显示的数字是正确的
但是图片一直都是第一幅,怎么改变head的值都不变,这是怎么回事呢?

  • 写回答

2条回答 默认 最新

  • 憧憬blog 2023-03-14 18:24
    关注

    根据你提供的代码和问题描述,初步判断可能是缓存导致的问题。你可以尝试在setImageResource()方法之前添加一个ivHead.setImageResource(0)的语句,清除ImageView中的缓存。

    修改后的代码如下所示:

    ImageView ivHead = getActivity().findViewById(R.id.mine_imageViewHead);
    int[] headResource = new int[]{R.drawable.head_1, R.drawable.head_2, R.drawable.head_3, R.drawable.head_4, R.drawable.head_5,
                    R.drawable.head_6, R.drawable.head_7, R.drawable.head_8, R.drawable.head_9};
    SharedPreferences sp = getActivity().getSharedPreferences("LoginSp", Context.MODE_PRIVATE);
    ivHead.setImageResource(0); //清除缓存
    ivHead.setImageResource(headResource[sp.getInt("head", 0) - 1]);
    

    另外,你可以在运行时检查一下headResource数组中是否有null值,或者尝试将ImageView的布局文件中的scaleType属性设置为fitXY,这也可能解决图片显示问题。

    希望以上回答能够对你有所帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月14日

悬赏问题

  • ¥50 Delphi5环境下图片文件怎么转换成Base64编码?
  • ¥15 久了用Python,今天打开PyCharm就这样了
  • ¥15 将GPDO_0引|脚设首成PWM1的输出引脚 实验编程该怎么写
  • ¥50 阿里云服务器 CentOS7.9 搭建 openvpn 服务
  • ¥100 开源软件弱点处理规范
  • ¥15 excel如何根据文件名自动搜索并批量导入文件?
  • ¥15 VScode 用户代码片段图标
  • ¥15 streamingtool
  • ¥15 MATLAB图像问题
  • ¥20 树莓派5做人脸情感识别与反馈系统