Android問題解決記錄—android.content.res.Resources$NotFoundException: Unable to find resource ID

問題描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章