最近把开发好的SDK提供个游戏开发接入的时候,出现了这个错误。
在我们自己项目测试的时候是不错出现这个错误的。后来发现对方接入的测试机是7.0的系统,而我们的测试机是5.0的系统!很有可能就是系统导致出现的问题。于是在网上找了相关的资料后,有可能是AssetManage的两个对象不一样造成的问题。因为我们在开发引用布局或者是空间的时候,正常的写法都是R.layout或者R.id,这种方式在我们开发应用app的时候,是没有问题的。但是当我们开发sdk,提供给第三方使用的时候。就可能会出现问题了。面对这个问题,我们开发sdk获取布局或者控件,最好的方式就是通过反射去获取,这样就不会存在AssetManage的对象不同,最后导致引用的报这个错误。
解决方法
例如在SDK中需要获取一个登录的按钮控件,我们可以先编写好一个ResLoader文件,这个文件就是用来替代R.id.的。
public static int getId(Context context, String name) {
if(context==null){
context = HWControl.getInstance().getContext();
}
return context.getResources().getIdentifier(name, "id",
context.getPackageName());
}
public static int getLayout(Context context, String name) {
if(context==null){
context = HWControl.getInstance().getContext();
}
return context.getResources().getIdentifier(name, "layout",
context.getPackageName());
}
然后我们在sdk中可以这样来进行调用
这样就可以解决了这个错误。我是一名Android工程师,我为自己加油!