Android问题解决记录—android.content.res.Resources$NotFoundException: Unable to find resource ID

问题描述

android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
Android问题解决记录—android.content.res.Resources$NotFoundException: Unable to find resource ID_第1张图片

问题分析

根据错误日志我们可以看出这里出现了资源未找到异常,根据以往的经验,可能是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新人比较难以排查到的问题,特此做个记录。

你可能感兴趣的:(Android问题解决记录—android.content.res.Resources$NotFoundException: Unable to find resource ID)