如何使用新值调用首选项?

时间:2012-03-25 21:15:46

标签: android android-preferences

我使用了一些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”有一个新值,但我看不到它。如何使用新值更新屏幕?

1 个答案:

答案 0 :(得分:0)

通过使用PreferenceActivity的子类,您不必处理首选项UI的更新。您可以在addPreferencesFromResource()加载的资源文件中定义首选项,并相应地呈现Activity。更改将自动保留,并应立即显示。您不必将您的首选项活动注册为SharedPreferences.OnSharedPreferenceChangeListener。

当调用onSharedPreferenceChanged()时,新值已保存到首选项。

此通知适用于除PreferenceActivity的子类之外的其他活动。要知道如何访问保存的首选项,您需要查看res / xml / settings.xml中的文件,它应该包含android:key属性。属性值为您提供首选项的键。

您可以通过以下方式检索值:

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