我有一個名爲MyDialogPreference
的DialogPreference
一個子類,它有兩個EditTexts用戶名和密碼,當我點擊DialogInterface.BUTTON_POSITIVE
按鈕,我設置一些喜好這樣的:集DialogPreference總結OnPreferenceChange
//I get userId from SQLite before this
SharedPreferences settings = this.getContext()
.getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("userId", userId);
editor.commit();
我想要的在我SettingsFragment那個叫DialogPreference,每當我關閉MyDialogPreference,我可能是能夠顯示數據改變爲偏好
這裏彙總的偏好的layour:
<Preference
android:key="update"
android:title="Update other preference" >
</Preference>
<com.cmr.MyDialogPreference
android:key="userPassScreen"
android:title="Login User" >
</com.cmr.MyDialogPreference>
我試圖將此DialogPreference綁定到OnPreferenceChangeListener,但它沒有奏效。
下面是也代碼:
DialogPreference userPassScreen = (DialogPreference) findPreference("userPassScreen");
userPassScreen
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
SharedPreferences settings = context
.getSharedPreferences(PREFS_NAME, 0);
int userId = settings.getInt("userId", 0);
if (userId == 0) {
preference.setSummary("Please Login");
return false;
}
try {
preference.setSummary(String.valueOf(userId));
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
有什麼辦法,我可以做這個?
PS。對不起,我的英文不好
好吧,沒有人回答,但我目前發現這個問題的解決方案[這裏](http://stackoverflow.com/a/531927/315905),使用SharedPreferencesListener – jmacboy