资产管理器上的nullPointer异常

时间:2014-09-18 12:05:41

标签: android asset-management

我的课程活动中有这个功能:

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

但是我得到了nullpointer异常:

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

我该怎么办?

2 个答案:

答案 0 :(得分:0)

首先创建一个上下文,

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

这里,使用您的包名而不是" com.project.test"。并使用上面的上下文而不是"这个"如下所示,

AssetManager assetManager = mTestAppContext.getAssets();

希望以上可以提供帮助。

答案 1 :(得分:0)

创建活动后,您需要致电getBitmapFromAsset()。 如果您在创建活动之前调用它,那么它将提供NullPointerException

然后代码 -

AssetManager assetManager = this.getAssets();

此处this = getActivity()因此为空。