安卓r.java_android R.java文件报错

android 的R.java文件报错是个很头疼的问题,虽然很少遇到,但由于R.java文件为自动生成的,解决问题一般不容易。

e32fbb5f19050c41e6a46c54ba304d77.png

首先,一般此类问题都是由于资源文件出问题导致的,即使资源文件并没有报错。

遇到此类问题,首先可以尝试以下两种方法:

1、右击你的Android项目——>Android Tools——>Fix Project Properties即可。

2、清理下项目:使用菜单Project——>clean——>选中需要clean的项目

f964e0cf3c7fb3a7b1b44c7cf2959986.png

以上两种都是比较偷懒的方法,都是让eclipse自己去解决问题。

当但有时候eclipse也无法解决问题,此时就需要我们自己去找问题了。

由于资源文件过多,出错的情况也各异,我就拿我的一个情况作为例子,其他相似情况解决方法类同。

方法就是直接到R.java文件中定位错误发生的位置。首先是定位哪部分资源文件出错,比如我的就是图片资源出错了:

74000edc808e006eba43ef1e0af723c0.png

然后进入出错的文件中查看到底是哪个文件出错了:

a18f958d10a1f83876983d28828cd7af.png

这里问题就很明显了,就是名字为24的图片出现了问题,那么就去查看这个图片到底出了什么问题。

d7abbb23bd91dfc7f1d78f7087321b2a.png

乍一看,好像并没有什么问题哦,但是大家可能忘记了一个很基本的问原则:Android中资源文件的命名规范中明确说明名字不能以数字开头,

febe52637fc02284f91e283f8bdab50e.png

然正确修改图片名字后,问题消失了:

ba2d7793c6d55f95aa57f033bc6e5550.png

上面也说了,我只是拿我遇到的问题做了个例子,其他的资源文件问题,解决问题思路是一致的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,当在Service中尝试通过`getString(R.string.card_not_exist)`获取字符串资源时,如果出错并报`NullPointerException`,通常意味着你可能遇到以下几个问题: 1. **资源文件未找到**:确认你在Service中使用的资源ID `R.string.card_not_exist`是否存在于`strings.xml`等资源文件中。如果资源ID不存在,或者文件路径错误,那么`getString()`会返回null。 2. **Context未初始化**:在Service中获取字符串资源需要一个非空的Context。确保你在Service的构造函数或生命周期方法中正确设置了Context。如果没有明确地传递一个`Context`到Service,或者在非主线程中试图获取资源,都可能导致NullPointerException。 3. **引用失效**:如果你是在异步操作(如消息处理)中尝试访问资源,确保你已经正确同步了资源访问,比如使用`Handler`或在主线程回调中获取资源。 修复建议: - 检查`strings.xml`文件中的资源ID是否存在,并确保在Service中正确引用了它。 - 确保在Service的构造函数或`onCreate()`方法中初始化了Context,可以将其作为成员变量保存起来供后续使用。 - 如果在Handler中处理消息,确保在`handleMessage()`方法中正确地检查Context是否可用。 ```java public class CardSerialService extends Service { private Context mContext; public CardSerialService() { // 如果在构造函数中接收Context this.mContext = /* ... */; } @Override public void onCreate() { super.onCreate(); // 或者在onCreate()中初始化Context this.mContext = getApplicationContext(); } @Nullable @Override public IBinder onBind(Intent intent) { // ... } @Override public void handleMessage(Message msg) { if (mContext != null) { String cardNotExistString = mContext.getString(R.string.card_not_exist); // 使用资源 } else { Log.e(TAG, "Context is null, unable to fetch string"); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值