問題描述
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新人比較難以排查到的問題,特此做個記錄。