从资产中读取会给出空指针

时间:2013-08-28 11:20:50

标签: java android file-io assets android-context

我在assets文件夹中有一个文件,我想在一个名为StorageManager的类中访问(只是一个常规类,不会扩展任何内容):

public class StorageManager {
    private Context context;

    public StorageManager(Context context){
        this.context=context;
    }

    public String readFileAsString(String filePath) throws java.io.IOException {
        AssetManager am = context.getAssets();
        InputStream is = am.open(filePath);
        String results = "";
        int data = is.read();
        while (data !=-1) {
            results += (char)data;
            data = is.read();
        }
        is.close();
        return results;
    }
}

我正在ListFragment内创建此类的实例,并将getActivity()作为上下文传递。

但是,当我使用有效的readFileAsString拨打filePath时,我会收到一行NullPointerException

AssetManager am = context.getAssets();

我假设这意味着上下文为空。但为什么?我该如何解决这个问题?


修改

如何调用:

public class MyListFragment extends ListFragment {
    public View onCreateView(LayoutInflater inflater, .....etc) {
        ...
        StorageManager storage = new StorageManager(getActivity());
        try{
            String filetext = readFileAsString("file");
        }catch(...)}
        ...
    }

}

1 个答案:

答案 0 :(得分:0)

尝试使用getActivity()。getBaseContext();