Android:从其他类nullpointerexception写入文件
我试图从另一个类编写一个文件,但我得到了一个无法解决的nullpointerexception。下面的代码可以在mainactivity中使用,没有任何问题,但是当我尝试在第二个类中使用它时,我得到了错误Android:从其他类nullpointerexception写入文件,android,filewriter,Android,Filewriter,我试图从另一个类编写一个文件,但我得到了一个无法解决的nullpointerexception。下面的代码可以在mainactivity中使用,没有任何问题,但是当我尝试在第二个类中使用它时,我得到了错误 public void writeFile() { String text = "Hello world"; String fileName = "TestFile.txt"; FileOutputStream fileOutputStream; Mai
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();
}
}
您需要传递活动上下文,而不是在write方法中创建新的活动实例
public void writeFile(Context context) {
writeFile(MainActivity.this);
并删除MainActivity maObj=newmainActivity()代码>as活动不能在Android中以这种方式实例化。此外,改变
fileOutputStream = maObj.openFileOutput(fileName, maobj.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();
}
}
现在将您的方法称为
public void writeFile(Context context) {
writeFile(MainActivity.this);
从MainActivity
类。您不能像这里那样使用新的构造函数创建活动
MainActivity maObj = new MainActivity();
换成这个
fileOutputStream=this.openFileOutput(文件名,maobj.MODE\u PRIVATE) 张贴完整的stacktrace。确保您在活动类中,为什么要在那里放置“this”?当我需要引用mainactivity时,为什么我要引用类对象?@Jullix993如果你看了我的第一条评论,你就会明白,你也可以在构建他们编写的意图intent intent=new intent(这个,DisplayMessageActivity.class)时在这里检查谷歌代码;当他们真的需要一个上下文(google约定)时,实际上你可以,但是android操作系统不会使用它来制定活动生命周期,顺便说一句,这不是最重要的answer@SamerZuhair,不,你不能。@323go你是说我不能说Object mObj=new Object,这就是我说你能做的;或者您是在告诉我无法附加MainActivity maObj=new MainActivity();maObj对android操作系统表示欢迎,我告诉你,android将不允许这样做it@Jullix993乐于助人,乐于助人。这可能是一个很好的答案——毕竟,这是正确的。请添加解释,删除“try”(听起来像是实验性的),总结一下新的writeFile()
方法。@323go删除“try”是什么意思?它必须抛出一个异常,对吗?@Jullix993,答案中包含了一个“尝试这样做…”的短语,它比答案更适合于评论。回答者将其删除,这是一个非常好的回答+1.