我想要求用户确认我的应用程序设置中的CheckBoxPreference更改。我试图在OnPreferenceClickListener和OnSharedPreferenceChangeListener中放置一个AlertDialog,但是在单击首选项后,我没有成功取消CheckBoxPreference更改。 感谢您的帮助。如何使用YES/NO确认对话框取消CheckBoxPreference
弥敦道,我尝试了以下2个观点:
1)PreferenceActivity这样实现OnPreferenceClickListener:
@Override
public boolean onPreferenceClick(Preference preference) {
new AlertDialog.Builder(this)
.setTitle("Move Data to SD card")
.setMessage("This will ...... Are you sure?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
CheckBoxPreference checkBoxPref = (CheckBoxPreference)findPreference(getString(R.string.prefSDEpisodes_key));
checkBoxPref.setChecked(!checkBoxPref.isChecked());
}
})
.show();
return false;
}
其实它的工作原理,但我不满意这个解决方案,因为用户在对话框后面的背景中看到CheckBoxPrefence的状态发生变化。这只是一个解决方法,包括交换框。这根本不干净。我需要在改变之前获得控制权。
2)在实施PreferenceActivity与OnSharedPreferenceChangeListener在 onSharedPreferenceChanged(类似的代码),但在这种情况下,交换回setNegativeButton框值的()编程连连触发偏好改变事件。摆脱确认对话框的唯一方法是选择YES。
如果没有简单的解决方案,我已经准备好扩展CheckBoxPrefence,但是如何?我应该重写哪种方法?
待办事项你有你试过的代码吗? – 2014-11-01 04:27:52