2012-03-25 13 views
1

我使用了一些CheckBoxPreferences,但它們不是獨立的。這意味着,如果我更改了一個CheckBoxPreference,其他人都修復了。我使用下面的代碼:如何使用新值調用首選項?

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 
     Context context = getApplicationContext(); 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
     prefs.registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) { 
     SharedPreferences.Editor editor = sharedPrefs.edit(); 
     if ((key.equals("A")) & (key.equals("B"))) { 
      editor.putBoolean("C", true); 
      editor.commit(); 
     } 
    } 
} 

之後CheckBoxPreference「C」有一個新的值,但我看不到它。我如何使用新值更新屏幕?

回答

0

通過使用PreferenceActivity的子類,您不必處理首選項UI的更新。您可以在addPreferencesFromResource()加載的資源文件中定義首選項,並且相應地顯示Activity。更改將自動保存並應立即顯示。您不必將首選活動註冊爲SharedPreferences.OnSharedPreferenceChangeListener。

當調用onSharedPreferenceChanged()時,新值已經保存到首選項中。

此通知適用於除PreferenceActivity的子類之外的其他活動。要知道如何訪問保存的首選項,您需要查看res/xml/settings.xml中的文件,它應該包含android:key屬性。屬性值爲您提供了首選項的關鍵。

您可以檢索通過以下值:

PreferenceManager.getDefaultSharedPreferences(aContext).getString(key, "");