0

次のコードの Android Java コードで nullpointerexception が発生しています。これは AndroidGraphics.java 内にあります。

public void drawPixmap(Pixmap pixmap, int x, int y) {
    canvas.drawBitmap(((AndroidPixmap)pixmap).bitmap, x, y, null);
}

AndroidPixmap.java は次のとおりです。

package com.badlogic.androidgames.framework.impl;

import android.graphics.Bitmap;

import com.badlogic.androidgames.framework.Graphics.PixmapFormat;
import com.badlogic.androidgames.framework.Pixmap;

public class AndroidPixmap implements Pixmap{
    Bitmap bitmap;
    PixmapFormat format;

    public AndroidPixmap(Bitmap bitmap, PixmapFormat format){
        this.bitmap = bitmap;
        this.format = format;
    }

    @Override
    public int getWidth(){
        return bitmap.getWidth();
    }

    @Override
    public int getHeight(){
        return bitmap.getHeight();
    }

    @Override
    public PixmapFormat getFormat(){
        return format;
    }

    @Override
    public void dispose(){
        bitmap.recycle();
    }
}

キャスティングに何か問題がありますか?どんな助けでも素晴らしいでしょう!

編集:これはピックスマップクラスです:

package com.badlogic.androidgames.framework;

import com.badlogic.androidgames.framework.Graphics.PixmapFormat;

public interface Pixmap {
    public int getWidth();

    public int getHeight();

    public PixmapFormat getFormat();

    public void dispose();
}
4

2 に答える 2

0

AndroidPixmapは Pixmap を実装しており、Pixmap から継承/拡張されていません。Pixmap にキャストすると、実装のみが得られます。これには bitmap=null があると想定しています。質問に Pixmap クラスを追加しなかったため、詳細に回答するのは非常に困難です。

于 2012-08-02T03:21:15.703 に答える
0

これを試して:

public void drawPixmap(AndroidPixmap pixmap, int x, int y) {
    canvas.drawBitmap(pixmap.bitmap, x, y, null);
}

または、署名を保持したい場合Pixmapは、それを抽象クラスにして、インターフェイスの代わりに拡張できます。

于 2012-08-02T11:22:27.973 に答える