问题描述
android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
问题分析
根据错误日志我们可以看出这里出现了资源未找到异常,根据以往的经验,可能是ID引用出现问题,但是这个错误日志并没有告诉我们问题出现的具体地方,所以是比较难找的一种。
后来网上搜索了一下,在stackflow上找到了解决答案。
原文地址
问题发现
根据这篇文章我们可以知道是动态生成ViewPager时没有设置ID导致,因为ViewPager没有ID因此,系统在加载的时候出现了异常。
看我的代码中出现错误的地方:
//初始化页面View
private void initView(){
/*头部广告运营位*/
RelativeLayout.LayoutParams adLp = (RelativeLayout.LayoutParams)mAdContainer.getLayoutParams();
adLp.height = MagicFun.getScreenWidthPixels() * 360 / 640;
mAdContainer.setLayoutParams(adLp);
if(null == mViewPagerAd){
mViewPagerAd = new ViewPager(getActivity());
//mViewPagerAd.setId("ADVP".hashCode());
mViewPagerAd.setOffscreenPageLimit(5);
mAdViewPagerAdapter = new HomeAdViewPagerAdapter(getActivity().getSupportFragmentManager());
}
mAdContainer.addView(mViewPagerAd, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
RelativeLayout.LayoutParams pointLp = (RelativeLayout.LayoutParams)mPointContainer.getLayoutParams();
pointLp.topMargin =adLp.height =MagicFun.dip2px(getActivity(), 48);
mPointContainer.setLayoutParams(pointLp);
}
问题就出在注释掉的那条语句。只要在动态生成ViewPager时给它指定ID,就不会报错了。
结尾
这个问题是作为Android新人比较难以排查到的问题,特此做个记录。