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

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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装