我有两个类,来自BinderData类,它扩展了BaseAdapter(我无法将此类扩展为Activity,因为我必须扩展到BaseAdapter)我通过以下代码调用类AssetActivity:
AssetActivity a = new AssetActivity();
Drawable image=a.getImage(imageUri);
这里的imageuri是一个字符串,它正确填充。在我正在使用的代码之后的AssetActivity类中。
public class AssetActivity extends Activity {
private static final String TAG = "AssetActivity";
public Drawable getImage(String imgName) {
String nextImageName = imgName+ ".jpg";
AssetManager assets = getAssets(); // get app's AssetManager
InputStream stream; // used to read in Image images
Drawable flag=null;
try {
// get an InputStream to the asset representing the next Image
stream = assets.open(nextImageName );
// load the asset as a Drawable and display on the objImageView
flag = Drawable.createFromStream(stream, nextImageName);
} // end try
catch (IOException e) {
Log.e(TAG, "Error loading " + nextImageName, e);
} // end catch
return flag;
}
}
当我运行代码时,我在下一行得到NullPointerException。
AssetManager assets = getAssets();
资产文件夹中有资产,我可以在其他显式调用getAssets()方法的类中获取它们,并且该类扩展了Activity。请帮我解决一下这个。我怀疑我在BinderData类中调用getImage方法时做错了什么。请帮我。感谢。
答案 0 :(得分:4)
AssetManager assets = getAssets();
会向您NullPointerException
,因为getAssets()
将返回null
。需要在活动getAssets()
;
Context
你不能为类创建Object,android会通过生命周期方法来处理它。所以不要为Activity创建Object。
将该方法放在Activity类中使用context.getAssets()
来获取资产