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はnull値を取得しました。また、プロンプトは正常に終了します。しかし次回SwitchPreferenceをクリックしたときにリスナーは呼び出されません –