我试图从另一个类写一个文件,但是我得到了一个无法解决的nullpointerexception。以下代码可以在mainactivity中使用而没有任何问题,但是当我尝试在我的第二个类中使用它时,我得到了错误。
public void writeFile() {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
MainActivity maObj = new MainActivity();
try {
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:4)
您需要传递活动上下文,而不是在write方法中创建新的活动实例
public void writeFile(Context context) {
并删除MainActivity maObj = new MainActivity();
,因为在Android中无法以这种方式实例化活动。此外,改变
fileOutputStream = maObj.openFileOutput(fileName, maobj.MODE_PRIVATE);
到
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
完成后,您的方法应如下所示:
public void writeFile( Context context ) {
String text = "Hello world";
String fileName = "TestFile.txt";
FileOutputStream fileOutputStream;
try {
fileOutputStream = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fileOutputStream.write(text.getBytes());
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
现在将您的方法称为
writeFile(MainActivity.this);
来自MainActivity
班。
答案 1 :(得分:2)
您无法像在此处一样使用Activity
构造函数创建new
。
MainActivity maObj = new MainActivity();
答案 2 :(得分:-2)
更改为
fileOutputStream = this.openFileOutput(fileName,maobj.MODE_PRIVATE);