1

我想在自定义视图中创建 scalebitmap,当我想添加 xml 布局时,xml 给出错误java.lang.NullPointerException,我想在 onSizeChangedFunction() 内的 init() 中更改一些行,包括我的 scalebitmap。我的代码如下;

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    parentWidth=w;
    parentHeight=h;
    init();         // <--- This

    mBitmap=Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
}

和我的 init() 函数:

private void init()
{
    for(int i=0 ; i<2; i++)
    {   
        int imageResources;
        imageResources=getResources().getIdentifier("rakam"+i, "drawable", myContext.getPackageName());
        Bitmap tempBitmap = BitmapFactory.decodeResource(myContext.getResources(), imageResources);
        --> Bitmap scaledBitmap= Bitmap.createScaledBitmap(tempBitmap, parentWidth, parentHeight, false);
        rakamlar.add(scaledBitmap);

    }
}

错误不在 Logcat 中,它在 Eclipse 的 xml 编辑器中。我怎样才能解决这个问题?

4

1 回答 1

0

只是一个猜测,但我认为您可能有一些资源在 Eclipse 下处于“编辑”模式时无法解决。为了让您摆脱直接错误,请尝试:

private void init()
{
    for(int i=0 ; i<2; i++)
    {   
        int imageResources;
        // I suspect imageResources will be 0 while in edit mode..
        imageResources=getResources().getIdentifier("rakam"+i, "drawable", myContext.getPackageName());

        if(!isEditMode()) {
            // Don't access the unavailable resources..
            Bitmap tempBitmap = BitmapFactory.decodeResource(myContext.getResources(), imageResources);
            Bitmap scaledBitmap= Bitmap.createScaledBitmap(tempBitmap, parentWidth, parentHeight, false);
            rakamlar.add(scaledBitmap);
        }

    }
}
于 2013-10-02T04:51:36.110 回答