Исключение 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();
Надеюсь, что выше может помочь.