Android:从其他类nullpointerexception写入文件

时间:2015-03-16 17:43:05

标签: android filewriter

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


    }
}

3 个答案:

答案 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);