当用户更改 switchpreference 的值时,我需要显示确认对话框并仅在用户单击肯定按钮时更改值,如果用户单击否定,则不应更改值。
设置您的首选项的OnPreferenceChangeListener
并返回false
以抑制修改。从那里显示对话框并手动更改您的首选项值。
val myPreference = preferenceScreen.findPreference<SwitchPreference>("my_pref_key")!!
myPreference.setOnPreferenceChangeListener { _, _ ->
MaterialAlertDialogBuilder(context)/* ... */.setPositiveButton("Yes") { _, _ ->
myPreference.isChecked = !myPreference.isChecked
}.show()
false // skip the default behavior
}
我认为你可以使用警示对话框来进行确认操作,其中包括正面和负面按钮。
在正面按钮中更改数值,在负面按钮中保留代码(不执行任何操作)。
new AlertDialog.Builder(this).
setTitle("title").setIcon(R.drawable.ic_launcher)
.setMessage(getResources().getString(R.string.message))
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
//change value here
}
}) .setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
}).show();