-1

そのため、4.4.2 (API 19) を使用するタブで実行するように IRC ボットを移植しています。

最後の日に私に問題を与えている機能は、見積もりデータベースです。これは、ユーザーによる見積もりを追加してファイルに保存します。それらは取得して表示できます。今、私はすでにファイルの作成に歯を食いしばっています。方法は次のとおりです。

    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 が呼び出される場所です。

私はこれまで、アンドロイドのドキュメントが保持している出力ストリームとライターのすべての可能な反復を試しました。

たぶん私は間違った用語を検索しましたか?

4

2 に答える 2

1

Activityを直接インスタンス化しないでください。それを行うのはフレームワークの仕事です。

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

その行は、おそらくあなたが目にしている多くの問題の根源です. context常にnullこの場合になります。

于 2015-03-08T23:47:36.007 に答える
0

まず、自分でアクティビティ インスタンスを作成しないでください (例: new Activity())。

第 2 に、特に指示がない限り、アクティビティが作成されるまで (つまり、少なくともそれ自体onCreate()からの実装によって)、アクティビティ インスタンスのメソッドを呼び出さないでください。Activity

上記のコードを考えると、あなたcontextは常に になります。null

于 2015-03-08T23:49:13.437 に答える