[Android][Fatal Exception] android.content.res.Resources$NotFoundException 问题及解决方法

问题1描述

读取sharePreferences的时候遇到了一个EXCEPTION,具体如下:


问题1解决方法

如上图所示,在R.java里找到这个ID对应的资源名,发现原来是我代码中的数据类型写错了,期待的是一个Int,但是我给的是一个String,代码及修改如下:

int defaultValue = getResources().getInteger(R.string.defaultIntValue); // 使用这个defaultIntValue就是错的,原因是我在string.xml给它添加的标签是<string>,虽然值是整型的,但是数据类型错了
int defaultValue = getResources().getInteger(R.integer.defaultIntValue); // 这里的integer常量是自己后来在string.xml添加的,使用的标签是<Integer>

问题2描述

使用Intent转到另一个activity中,activity里面带一个textView用来显示结果,但实际测试时只要点击跳转按钮程序就挂了,这个resource ID在R.java里面还找不到,晕@@


问题2解决方法

在Android Monitor中找到“Caused by”的上下文,可以看到离这行最近的我的包所执行的是如下这行代码:
mResult.setText(valueRetrieved);

其中的valueRetrieved:
int valueRetrieved = sharedPref.getInt(keyToRetrive, defaultValue);

查看setText()的源码,又是数据类型用错了 ==!
public final void setText(@StringRes int resid) {
        setText(getContext().getResources().getText(resid));
    }

将int转换为String,然后就可以正常运行了:
mResult.setText(Integer.toString(valueRetrieved));

基础问题,愿以后不再犯@@




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值