2017-07-13 8 views
0
SharedPreferences pref =getApplicationContext().getSharedPreferences("MyPref", 0); 

Editor editor = pref.edit(); 

ここにはsharedpreferencesというコードがあります。このgetApplicationContext()getSharedPreferences()のContextクラスのメソッドが使用されていますが、getApplicationContext()getSharedPreferences()はいずれも抽象であり、実装を行わずにどのように使用できますか?実装なしでgetApplicationContext()をどのように使用できますか?

編集1:

私はsharedpreferencesオブジェクトは、上記のコードを使用して作成されますが、使用方法の両方が抽象的で、その後どのように我々はそれらを実装することなく、それらを使用できることを言っていますか?

+0

あなたの質問は何ですか? – Sony

+0

明らかにクエストオンに尋ねますか? – Raj

+0

'PreferencesManager.getDefaultSharedPreferences(context)'を試してください。 'Activity'や' Service'でこれを行う場合、これらのメソッドをオーバーライドする必要はありません。 – ELITE

答えて

0

本当にあなたがどこにいるのか、何を達成しようとしているのかによって異なります。 Please read more about Android context。一般的には、いくつかの値を保存する必要があるため共有された環境設定にアクセスしたいとします。通常、あなたはActivityクラスに属しています。アクティビティから、コンテキストにアクセスするには2通りの方法があります。getBaseContext()getApplicationContext()。前者はインスタンスごとに固有の基本コンテキストを提供し、後者はプロセスごとに固有のアプリケーションコンテキストを提供します。システムは、作成された各アクティビティの基本コンテキストの実装を作成し、プロセスの作成時にアプリケーションコンテキスト実装を作成します。あなたが目にしているのは、彼らの抽象的な宣言です。

0

getApplicationContext() and getSharedPreferences() are abstract - それらは、Contextクラスでは抽象ですが、その子に実装されています。例えば、ActivtyContextの子クラスであり、それは次のようにgetApplicationContext()の実装を持っています

mBaseは、それが接続されている Activity、に割り当てられている Context、いくつかの非パブリック実装である
@Override 
public Context getApplicationContext() { 
    return mBase.getApplicationContext(); 
} 

ActivityThread

あなたは簡単にのAndroidソースを調べて、これ以上の他の興味深いものを自分で見つけることができます。

関連する問題