0

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();

これは、コンテキストが null であることを意味すると想定しています。しかし、なぜ?これを修正するにはどうすればよいですか?


編集

その呼び方:

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

}
4

1 に答える 1

0

getActivity().getBaseContext(); を使用してみてください。

于 2013-08-28T14:57:16.450 に答える