openFileOutput抛出NullPointerException(我不知道为什么)

时间:2015-03-08 23:46:01

标签: java android file-writing

所以,我正在移植我的IRC Bot以在我的Tab上运行,它使用4.4.2(API 19)

现在最后一天给我带来问题的功能是引用数据库,它可以添加用户的引号并将它们存储到文件中 - 它们可以被检索和显示。现在,我已经咬牙切齿创建了一个文件。 方法如下:

    public void createFile(String filenick){

        try {
           FileOutputStream os = MainActivity.context.openFileOutput(filenick, 0);
           os.close();
        } catch (FileNotFoundException e) {
            System.out.println("createFile "+filenick+" happened");
        } catch (IOException e) {
            System.out.println("IO error " + filenick + " happened");
        }


    }

背景来自

public class MainActivity extends Activity {

    public static Context context=new MainActivity().getApplication();

它编译得很好,Android Studio不会给我任何错误。 除了这个以外,Bot可以使用他的所有功能。

 java.lang.NullPointerException
    at com.coilworks.dreaddroid.QDBClass.createFile(QDBClass.java:175)
    at com.coilworks.dreaddroid.QDBClass.adder(QDBClass.java:57)

For Context:QDBClass.java:175是以FileOutputStream开头的行。

57是调用createFile的地方。

到目前为止,我已经尝试了android文档所拥有的每个可能的Outputstreams和writer的迭代。

也许我只是在寻找错误的条款?

2 个答案:

答案 0 :(得分:1)

您不应该直接实例化Activity。这是框架的工作。

public static Context context=new MainActivity().getApplication();

这条线可能是您所看到的许多问题的根源。在这种情况下,context始终为null

答案 1 :(得分:0)

首先,永远不要自己创建活动实例(例如,new Activity())。

其次,在创建活动之前不要调用活动实例上的方法(即,至少通过onCreate()实现的Activity实现),除非另有特别说明。

根据您的上述代码,context始终为null