Android:从其他类nullpointerexception写入文件

Android:从其他类nullpointerexception写入文件,android,filewriter,Android,Filewriter,我试图从另一个类编写一个文件,但我得到了一个无法解决的nullpointerexception。下面的代码可以在mainactivity中使用,没有任何问题,但是当我尝试在第二个类中使用它时,我得到了错误 public void writeFile() { String text = "Hello world"; String fileName = "TestFile.txt"; FileOutputStream fileOutputStream; Mai

我试图从另一个类编写一个文件,但我得到了一个无法解决的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();


    }
}

您需要传递活动上下文,而不是在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.