-1

getDefaultSharedPreferencesの代わりにcontext.getSharedPreferenceを使用しています。意味 :

SharedPreferences checkboxSetting = context.getSharedPreferences(
                                         "myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = checkboxSetting.getBoolean("checkboxKey",true);

そしてpreference.xml:

<CheckBoxPreference 
        android:key="checkBoxPrefff"
        android:title="@string/title"
        android:defaultValue="true"/>

アプリケーション設定には、チェックされているかどうかにかかわらず、値を取得したいチェックボックス設定があります。

これは機能しますか?

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
                                                                      String key) {
    if (key.equalsIgnoreCase("checkBoxPrefff")) { 
         sharedPreferences.getBoolean(key,true);
    }
 }

sharedPreferencesはデフォルトデータベース(..._ preference.xml)または定義済みデータベース( "myPreferenceDB")を使用しますか?キーは「checkboxKey」ですか、それともnullですか?

のような価値を得たいとき

SharedPreferences temp = context.getSharedPreferences(
                                         "myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = temp.getBoolean("checkboxKey",true);

それは間違っていて、defValue(true)を取り戻します。しかし、次のように使用する場合

SharedPreferences temp = PreferenceManager.getDefaultSharedPreferences(context);
boolean flag = temp.getBoolean("checkboxKey",true);

できます。

4

2 に答える 2

1

繰り返しになりますが、sharedPrefはDBではなくXMLファイルです。次のコードをお探しの方もいらっしゃると思います。

public class SettingsActivity extends PreferenceActivity {

    /*
     * (non-Javadoc)
     * 
     * @see android.preference.PreferenceActivity#onCreate(android.os.Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getPreferenceManager().setSharedPreferencesName("myPref"); 
        addPreferencesFromResource(R.xml.pref);
    }
于 2012-11-11T16:16:18.550 に答える
1

SharedPreferenceChangedListenerは、使用している任意の共有設定に登録できます。デフォルトの共有設定である必要はありません。

getApplicationContext().getSharedPreferences("myPreferenceDB", 0).registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {

        @Override
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
                String key) {
            // TODO Auto-generated method stub

        }
    });
于 2012-11-08T12:11:40.723 に答える