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

openFileOutput throws NullPointerException (And i dont know why)

所以,我正在将我的 IRC Bot 移植到我的选项卡上的 运行,它使用 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 没有给我任何类型的错误。 机器人可以使用除此之外的所有功能。

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

对于上下文:QDBClass.java:175 是以 FileOutputStream 开头的行。

57 是调用 createFile 的地方。

到目前为止,我已经尝试了 android 文档中所有可能的输出流和编写器迭代。

也许我只是搜索了错误的术语?

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

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

该行可能是您遇到的许多问题的根源。在这种情况下,context 将始终是 null

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

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

根据上面的代码,您的 context 将始终是 null