Почему бы просто не создать свою собственную DialogPreference? Вот шаги:
1) создайте макет для вашего диалога в XML.
2) Расширьте класс DialogPreference платформы Android с помощью собственного пользовательского класса.
3) В конструкторе установите макет диалога с помощью
public CustomDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.preference_dialog_number_picker);
}
4) переопределить метод onBindDialogView (View view) и привязать элементы макета к вашему коду. Получите текущее значение пароля из файла SharedPreferences и обработайте проверку с помощью TextChangedListeners, например: если пользователь не подтверждает новый пароль, отобразите ошибку.
@Override
protected void onBindDialogView(View view) {
// bind view
mOldPass = (TextView) view.findViewById(R.id.old_pass);
mNewPass = (TextView) view.findViewById(R.id.new_pass);
mConfirmPass = (TextView) view.findViewById(R.id.confirm_pass);
// get the current password from SharedPreferences
// add text changed listener for handling validation
}
5) переопределить метод onClick (диалоговое окно DialogInterface, int которое). этот метод будет вызван, когда пользователь нажмет кнопку диалога, например, кнопку «ОК». Сохраните новый пароль в файле SharedPreferences.
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
// save your new password here
break;
default:
// do something else...
break;
}
}