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日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图