Для пользовательского AlertDialog я могу переопределить положительную кнопку, чтобы НЕ закрыть диалог? вместо этого я хочу запустить некоторые проверки прав и оставить диалог открытым, если мои проверки не удались.AlertDialog - как я могу запускать проверки, когда пользователь нажимает «OK»
protected Dialog onCreateDialog(int id) {
Dialog alertDialog = null;
builder = new AlertDialog.Builder(this);
switch(id) {
case LOGIN_USERID_BLANK:
builder.setMessage((String)getString(R.string.username_not_blank));
builder.setPositiveButton((String)getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Can I do something here so that the dialog does not close?
}
});
break;
В то время как это предложение может работать, я не думаю, что это предназначено для AlertDialog. В этот момент я не уверен, что AlertDialog предлагает любую выгоду в универсальном настраиваемом диалоге и, вероятно, путает будущих поддерживающих код. –
@glenviewjeff: Я согласен, что это своего рода хак, и это определенно потребует приятного комментария в коде. Также обратите внимание, что никто не предлагал ничего лучшего, пока мое предложение действительно делает то, что требуется. Еще один момент, который вам, возможно, не хватает, заключается в том, что «встроенные» диалоговые кнопки автоматически закрывают диалоговое окно после запуска их слушателей, поэтому они не будут соответствовать запрошенному поведению. Вы когда-нибудь реализовывали общий пользовательский диалог? Если да - не могли бы вы поделиться этим кодом (я этого никогда не делал, поэтому мне интересно увидеть образец). –
Я отложил проверку данных на данный момент, пока не смогу сделать это правильно с помощью специального диалога. Я надеюсь, что они исправят этот недостаток во встроенных диалогах в будущем Android API. Я постараюсь опубликовать что-то, когда я займусь этим, чтобы это исправить. –