簡體   English   中英

偵聽器共享首選項

[英]listener sharedpreferences

我對此代碼有疑問。 我想在應用程序中保留首選項值,但是偵聽器出現問題。 不起作用,它不保存新值。 對錯誤有任何想法嗎?

編輯: onResume()之所以有效,是因為當我在應用程序上打開一個活動並將其關閉時,sharepreferences的值是正確的。 對話框和活動不保留值。

public void onCreate(){
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
          listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
              public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
                    if(!preferencesChanged)preferenze();

            }
              };
      sp.registerOnSharedPreferenceChangeListener(listener);

有一些按意圖調用的按鈕和其他信息活動。
一個TextView,它顯示數組中的值,但不顯示任何值。

    public void onPause() {
        super.onPause();
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        sp.unregisterOnSharedPreferenceChangeListener(listener);

protected void onResume() {
        super.onResume();
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
        public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
        preferencesChanged = true;
                }
        };
        sp.registerOnSharedPreferenceChangeListener(listener);

protected void onStop(){
        super.onStop();
        if(preferencesChanged){
            //Update the app
            preferenze();
        }


public void preferenze()
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

        CheckboxPreference = prefs.getBoolean("checkboxPref", true);
        ListPreference = prefs.getString("listpref", "");

其他變量和大多數if / else。

Preferences.xml:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.layout.preferences);

    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences prefs, String listpref) {
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settings); SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); sp.registerOnSharedPreferenceChangeListener(this); }

我認為,您缺少registerOnSharedPreferenceChangeListener

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM