Исключение nullPointer в менеджере активов

У меня есть эта функция в моем классе

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 расширяет активность

но я получаю исключение nullpointer для:

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

что я должен делать?

2 ответа

Решение

Вам нужно позвонить getBitmapFromAsset() после того, как деятельность создана. Если вы позвоните до создания действия, то оно даст NullPointerException,

Код тогда -

AssetManager assetManager = this.getAssets();

Здесь this = getActivity() и, следовательно, является нулевым.

Сначала создайте контекст, как показано ниже,

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

здесь используйте имя вашего пакета вместо "com.project.test". И используйте выше контекст вместо "это", как показано ниже,

AssetManager assetManager = mTestAppContext.getAssets();

Надеюсь, что выше может помочь.

Другие вопросы по тегам