0

我的班级活动中有这个功能:

private Bitmap getBitmapFromAsset(String strName) {
    AssetManager assetManager =this.getAssets();
    InputStream istr = null;
    try {
        istr = assetManager.open(strName);
    } catch (IOException e) {
        e.printStackTrace();
    }
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    return bitmap;
}

这个函数在公共类 Game1 中扩展了 Activity

但我得到空指针异常:

AssetManager assetManager = this.getAssets();
Caused by: java.lang.NullPointerException at packagename.Game1.getBitmapFromAsset

我该怎么办?

4

2 回答 2

0

首先创建一个上下文,如下所示,

Context mTestAppContext = getContext().createPackageContext("com.project.test",
                Context.CONTEXT_IGNORE_SECURITY);

在这里,使用你的包名而不是“com.project.test”。并使用上面的上下文而不是如下所示的“this”,

AssetManager assetManager = mTestAppContext.getAssets();

以上希望能有所帮助。

于 2014-09-18T12:19:11.543 回答
0

您需要getBitmapFromAsset()在活动创建后调用。如果您在活动创建之前调用它,那么它将给出NullPointerException.

然后的代码 -

AssetManager assetManager = this.getAssets();

这里this = getActivity()and 因此为空。

于 2014-09-18T12:19:51.693 回答