2016-05-30 2 views
-1

私はapp内の任意の場所からファイルに書き込むことができるメカニズムを作りたい。getApplicationContextを取得できません。 java.lang.NullPointerExceptionのため

私は次のクラスを作る:

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import android.content.Context; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.FileOutputStream; 
import java.io.OutputStreamWriter; 

import android.app.Activity; 
import android.os.Environment; 
import android.util.Log; 
import android.content.Context; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class LogFile extends Activity { 

    public void writeFile(String msg) 
    { 
     Log.d("writeFile", "writeToFile"); 

     try { 
      Context context = getApplicationContext(); 
      FileOutputStream fos = context.openFileOutput("log.txt", Context.MODE_PRIVATE); 
      OutputStreamWriter osw = new OutputStreamWriter(fos); 
      BufferedWriter outputStream = new BufferedWriter(osw); 
      outputStream.write(msg); 
      outputStream.close(); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      Log.d("writeFile", "File not found"); 
     } catch (NullPointerException e) { 
      e.printStackTrace(); 
      Log.d("writeFile", "NullPointerException"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.d("writeFile", "File problems"); 
     } 
    } 
} 

しかし、この行の Context context = getApplicationContext(); 私はエラー

W/System.err: java.lang.NullPointerException 
W/System.err:  at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:185) 
W/System.err:  at com.example.tracklogger.LogFile.writeFile(LogFile.java:37)   
+0

通常、NullPointerExceptionsをキャッチすると間違ったことが起きたことを意味します...しかし、なぜgetApplicationContextが原因になるのか分かりません。 –

+0

これを試してください。...コード行...コンテキストコンテキスト= LogFile.this; –

+2

どこからこのメソッドを呼び出していますか?その時点で活動が開始されていますか? – Egor

答えて

0

を持っている私は、これはあなたの問題かを解決するための「正しい」方法でわからないんだけどそれを機能させる。 問題はActivityのコンテキストの値を渡していることです(これはnullなので、例外がスローされ、アプリケーションのコンテキストが必要です)。

GlobalVars.javaファイルを、すべてのアプリケーションコンテキストのような「グローバル変数」、(ない活動のコンテキスト)を含む:撮影

public class GlobalVars extends Application { 
public static Context context; 

    @Override public void onCreate() { 
     super.onCreate(); 
     context = getApplicationContext(); 
    } 
} 

を次のように私の個人的な場合

は、私は同様の問題を解決しましたここから: Getting the Application Context

幸運と幸せなコーディング!

+0

また、そのクラスをアプリケーションとしてマニフェストに追加する必要があります –

関連する問題