Android assetManager getAsset()抛出nullPointer异常

时间:2013-05-15 17:44:22

标签: android nullpointerexception

我有两个类,来自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方法时做错了什么。请帮我。感谢。

1 个答案:

答案 0 :(得分:4)

AssetManager assets = getAssets();会向您NullPointerException,因为getAssets()将返回null。需要在活动getAssets();

中调用Context

你不能为类创建Object,android会通过生命周期方法来处理它。所以不要为Activity创建Object。

将该方法放在Activity类中使用context.getAssets()来获取资产