我有一个使用其他类
的静态方法的类public class ArticleFragment extends Fragment {
...
// use static method to get text from file
String articleString = FileRead.readRawTextFile();
article.setText(articleString);
...
}
然后我用方法
上课了public class FileRead extends Application {
private static Context ctx;
@Override
public void onCreate() {
super.onCreate();
ctx = this;
}
public static Context getContext(){
return ctx;
}
public static String readRawTextFile()
{
InputStream inputStream = null;
StringBuilder text = new StringBuilder();
try {
//**** E R R O R ***********************
inputStream = FileRead.getContext().getResources().openRawResource(R.raw.plik);
//***************************************
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
while (( line = buffreader.readLine()) != null) {
text.append(line);
text.append('\n');
}
return text.toString();
} catch (Exception e) {
Log.e("APP", "*** "+e, e);
return null;
}
}
}
我收到错误NullPointerException。 文件是res / raw。我认为上下文存在问题,但不知道为什么。
答案 0 :(得分:1)
donfuxx是对的; FileRead.getContext()
为空。
然而,我们仍然可以获得背景!将其作为readRawTextFile()
的参数传递。
所以它变成了:
public static String readRawTextFile(Context context);
然后将FileRead.getContext()
更改为
inputStream = context.getResources().openRawResource(R.raw.plik);
然后将您的方法调用更改为:
String articleString = FileRead.readRawTextFile(context);
用
替换上下文