Kir*_*irk 3 android preference customdialog android-alertdialog
任何人都可以向我建议一种在更改CheckboxPreference或SwitchPrerence(例如)时执行AlertDialog确认更改的方法。如果我要取消选中首选项,则AlertDialog应该警告它们,例如“您确定要取消选中吗?” 加上对话框应该可自定义,因为我要使用自己的布局。我不希望对话框带有默认的Bluestrip标头。
SwitchPreference pref = (SwitchPreference) findPreference("prefkey_use_passcode");
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference arg0, Object arg1) {
DialogPreference dialog = new DialogPreference(getParent());
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我设法做到这一点:
final CheckBoxPreference myPref = (CheckBoxPreference) findPreference("myPref");
if (myPref != null) {
myPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue instanceof Boolean && ((Boolean) newValue) != PreferencesHelper.getMyPref()) {
final boolean isEnabled = (Boolean) newValue;
if (!isEnabled) {
new AlertDialog.Builder(PreferencesActivity.this)
.setTitle("Confirm")
.setIcon(R.drawable.alert)
.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
// do nothing
}
})
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
// OK has been pressed => force the new value and update the checkbox display
PreferencesHelper.setMyPref(false);
myPref.setChecked(false);
}
}).create().show();
// by default ignore the pref change, which can only be validated when OK is pressed
return false;
}
}
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
=> PreferencesHelper代码
public static boolean getMyPref() {
return getSharedPreferences().getBoolean("myPref", true);
}
public static void setMyPref(boolean newValue) {
Editor edit = getEditor();
edit.putBoolean("myPref", newValue);
edit.apply();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |