-1

所以,我将我的 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)

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

57 是调用 createFile 的地方。

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

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

4

2 回答 2

1

你永远不应该Activity直接实例化一个。这是框架的工作。

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

那条线可能是您看到的许多问题的根源。在这种情况下context将永远存在。null

于 2015-03-08T23:47:36.007 回答
0

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

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

鉴于您上面的代码,您context将永远是。null

于 2015-03-08T23:49:13.437 回答