0

テキストをファイルに書き込もうとしていますが、うまくいかないようです。

public static void saveState(){

        String data = age + "," ;
        FileOutputStream fos;
        Context con = getApplicationContext();
        try {
            fos = con.openFileOutput("state", 0);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
            outputStreamWriter.write(data);
            outputStreamWriter.close();
        }
        catch (IOException e) {
            Log.e("Exception", "File write failed: " + e.toString());
        } 


    }

私は周りを見回しましたが、コンテキストなしでopenFileOutput()を呼び出すことはできないようですが、「Context con = getApplicationContext()」がアクティビティの外では機能しないとは思いません。getapplicationcontext がその型に対して定義されていないことがわかります。誰か助けてくれませんか?

4

1 に答える 1

1

呼び出しアクティビティからコンテキストを渡す必要があります。

public static void saveState(Context context){

    String data = age + "," ;
    FileOutputStream fos;

    try {
        fos = context.openFileOutput("state", 0);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}

アクティビティからこれを使用する方法:

YOUR_UTIL_CLASS.saveState(this);

以下は機能しません。

Context con = getApplicationContext();

理由:getApplicationContext()に属するメソッドですContextWrapper。クラスActivityは拡張ContextWrapperされるため、このメソッドにアクセスできます。メソッドsaveState(..)はおそらくユーティリティ クラスにあります。getApplicationContext()そこでは定義されていません。

于 2013-09-28T03:09:10.427 に答える