2016-03-18 6 views
-1

これは私の最初のアンドロイドコードの一部です。私はちょうどいくつかのデータを書き込んで読みたいが、私のアプリはコンテキストを知らない。私はここでの答えからこのコードを持っているstackoverflow:How To Read/Write String From A File In Android 私はそれを使用する前にコンテキストを定義する必要はありますか?私を助けてくれてありがとう!ここでアンドロイドアプリは文脈を知らない

private void writeToFile(String data) { 
      try { 
       OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config.txt", Context.MODE_PRIVATE)); 
       outputStreamWriter.write(data); 
       outputStreamWriter.close(); 
      } 
      catch (IOException e) { 
       Log.e("Exception", "File write failed: " + e.toString()); 
      } 
     } 

は、それは、Android Studioでどのように見えるかです:

enter image description here

+0

どのクラスでコンテキストを使用しようとしていますか?明らかにそれはどこかで宣言されていないので、アクティビティ、フラグメント、およびその他のコンテキストに異なるアプローチを使用してコンテキストを取得することができます –

答えて

3

あなたの方法は、Activityクラス内にある場合、getApplicationContext()contextを交換してください。そうでない場合は、クラス内のフィールドContext contextを宣言し、そのアクティビティ/サービスからその値を設定する必要があります。

+1

メソッドがアクティビティ内にある場合、 'context'をnothingまたは' this'で置き換えます。 – Simas

1
context 

は変数です。あなたのコードのどこにでも宣言されていません。 Contextクラスのオブジェクトである必要があります。

getApplicationContext() 

または と交換して、それを呼び出すときに、メソッドのパラメータを通じてコン​​テキストを提供します。

か(時間のほとんど)あなたが

context 

を置き換えることができます。

this 

キーワード。あなたのコードがActivityクラスを拡張しているクラスの中にある場合、動作するかもしれません。

1

Activityは、Services、ApplicationクラスなどのようにContextの子です。

あなたは活動でこのコードを使用している場合、openFileOutput()が継承されたメソッドであるので、あなたはそれを呼び出す必要があります:

... openFileOutput("config.txt", Context.MODE_PRIVATE) ... 

あなたはフラグメント内にある場合、あなたはgetContext()を呼び出すことができます:

... getContext().openFileOutput("config.txt", Context.MODE_PRIVATE) ... 

そして、あなたは別のクラスにある場合、あなたは(この参照を取得する必要がありますたとえば、コンストラクタやメソッド呼び出しで要求します)。

private void writeToFile(String data, Context context) { 
    ... 
    context.openFileOutput("config.txt", Context.MODE_PRIVATE) 
    ... 
} 
関連する問題