値を設定するために使用CheckBoxPreference
します。PreferenceActivity
後で、ReceiverやServiceからその値を確認したいと思います。findPreference()
そのコンテキストからメソッドを使用することはできません。SharedPreferences
この設定値はとにかく保存されていることは知っていますが、重要なのは何ですか?チェックボックスの値を取得するにはどうすればよいですか?
4 に答える
この設定値はとにかくSharedPreferencesに保存されていることは知っていますが、重要な点は何ですか?
android:key
好みのXMLでどのような値を使用する場合でも。
チェックボックスの値を取得するにはどうすればよいですか?
PreferenceManager.getDefaultSharedPreferences()
を取得するために呼び出してから、で使用したキーを使用してSharedPreferences
呼び出します。getBoolean()
android:key
設定XMLには、次のようなものがあります。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:enabled="true"
android:title="@string/s_pref" android:key="@string/pref"
android:defaultValue="@string/d_pref"></CheckBoxPreference>
</PreferenceScreen>
あなたのstrings.xmlは次のようになります:
<string name="pref">my.package.PREF</string>
<string name="s_pref">Prompt</string>
<string name="d_pref">true</string>
アクティビティのonCreate()は、次のようになります。
prefs = PreferenceManager.getDefaultSharedPreferences(this);
pref = prefs.getBoolean(getString(R.string.pref), true));
誰かが設定を変更したときに何かをしたい場合は、onActivityResult()をアクティビティに追加し、startActivityForResult()を使用して設定アクティビティを開始します。設定の変更を示す結果コードを指定してonActivityResult()が呼び出された場合は、別のgetDefaultSharedPreferences()を実行できます。
共有設定フレームワークはデータを自動的に保持します...設定アクティビティでOnPreferenceChangeListenerを使用したい場合は可能ですが、自分で積極的に処理する必要はありません。
CommonsWareの回答に追加する唯一のことは、サービスについて言及したので、サービスが知る必要のある設定をIntentエクストラに入れることができるということです。例えば:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Intent intent = new Intent(this, MyService.class);
intent.putExtra("mypref", prefs.getString("mypref", ""));
startService(intent);
あなたのサービスでこれを書いてみてください
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplication());
ここで、xmlで使用したキーを指定します
if(preferences.getBoolean(your key ,true))
{
これがお役に立てば幸いです。