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