簡體   English   中英

無法聽取偏好變化?

[英]Could not listen to preference changes?

class UserViewModel extends ViewModel{
    appPrefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
}}

private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener;

public void subscribe() {

 preferenceChangeListener = (sharedPreferences, key) -> {

        }
    };
    appPrefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener);

};

public void unsubscribe(){
    appPrefs.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener);
}

subscribe()unsubscribe()從Fragment onAttach()onDetach()方法調用,但在屬性狀態更改時不起作用。 正如您所看到的,preferenceChangeListener是類成員而不是方法屬性。 在另一個片段中更改了preference的值,當我導航到另一個片段並返回preferenceChangeListener為null時,它在onAttach()中再次初始化,我看到原因,但我不知道如何克服。

我建議在片段onResume() registerOnSharedPreferenceChangeListener()期間registerOnSharedPreferenceChangeListener() onResume() ,在onPause()unregisterOnSharedPreferenceChangeListener() onPause() 還要檢查首選項名稱的內容。 這可能是一個錯字。

`

 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
            if (key.equals(KEY_PREF_SYNC_CONN)) {
                Preference connectionPref = findPreference(key);
                // Set summary to be the user-description for the selected value
                connectionPref.setSummary(sharedPreferences.getString(key, ""));
            }
        }

`官方文檔可以在這里找到: https//developer.android.com/guide/topics/ui/settings.html#Fragment

暫無
暫無

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

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