【问题标题】:Reading from assets gives null pointer从资产中读取会给出空指针
【发布时间】:2013-08-28 11:20:49
【问题描述】:

我在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() 作为上下文传递。

但是,当我使用有效的filePath 拨打readFileAsString 时,我会得到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(...)}
        ...
    }

}

【问题讨论】:

  • 是的 context 为 null 你如何传递构造函数以及从哪里传递?
  • 显示您的有效文件路径。
  • 我在 ViewPager 中有一个 ListFragment,我调用: StorageManager storage = new StorageManager(getActivity());从扩展 ListFragment 的类中
  • 调用 this.getAssets();可能是工作
  • 什么是 null?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多