1
我創建SwitchPreference
以更改Android設置活動中的值。當用戶更改SwitchPreference
值時,將調用「setOnPreferenceChangeListener()」函數。當用戶在setOnPreferenceChangeListener中選擇否定按鈕時關閉確認對話框
現在,我顯示了一個用於此操作的用戶確認的對話框提示。當用戶點擊肯定按鈕時,它正常工作。
但問題是,每當用戶選擇否定確認按鈕。
在Android API 21中 - 對話框提示正常關閉。
在Android API 19中 - 對話框提示重複打開。
switchPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, final Object newValue) {
new EasyMaterialDialog.Builder(getActivity())
.title("Confirmation")
.content("Are you sure?")
.positiveText("Yes")
.negativeText("No")
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
//Works Normally
}})
.onNegative(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
//The problem is here
//The switchPreference value changed here again
//So once again setOnPreferenceChangeListener is called
switchPreference.setChecked(!(Boolean)newValue);
}
})
.cancelable(false)
.show();
return false;
}
});
如何在用戶點擊否定按鈕時更改SwitchPreference的舊值?
我同時加入'switchPreference.setOnPreferenceChangeListener(OnPreferenceChangeListener.this)一個錯誤;'錯誤: 'android.preference.Preference.OnPreferenceChangeListener'不是封閉類 –
@JegadeesanS,已更新。 – azizbekian
如果在對話框中單擊「否」按鈕,PreferenceChangeListener將獲得空值。此提示正常關閉。但下次當我點擊SwitchPreference時,監聽器不會被調用 –