1

私のアプリでは、アプリの SharedPreferences へのすべてのリクエストを処理するクラスで Context を使用します。クラスの関連部分はコンストラクターです。

private SharedPreferences preferences;
public AppSettings(Context context){
    preferences = PreferenceManager.getDefaultSharedPreferences(context);
}

最初のアクティビティ内で、クラス内の他のメソッドを使用してパラメーターを設定および読み取ることができます。 AsyncTask を拡張するクラスの doInBackground() 呼び出し内から getApplicationContext() を使用しコンテキストを呼び出します

public class MyTask extends AsyncTask<Void, Void, Boolean> {
    @Override
    protected Boolean doInBackground(Void... params) {
        ...
        AppSettings as = new AppSettings(context);
        ...
    }
}

これは問題なく動作しますが、次のアクティビティで設定を復元しようとすると:

public class MainActivity extends Activity 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AppSettings as = AppSettings(getApplicationContext());
    }
    ...
}

Eclipse で次のようなエラーが表示されます。

メソッド AppSettings(Context) はタイプ MainActivity に対して未定義です

getApplicationContext についての私の理解は、アプリのグローバルなコンテキストを提供する必要があるということですが、明らかにそれぞれのケースで異なるものを返しています。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

えーと。

AppSettings as = new AppSettings(getApplicationContext()); //<-- missed the "new"
于 2013-02-25T18:08:33.757 に答える