Android: кнопка в AlertDialog

Здравствуй
В моем приложении Android я хочу получить вход пользователя из виджета EditText в AlertDialog. Если пользователь не вводит юридический текст и не нажимает кнопку подтверждения, AlertDialog не следует закрывать, и необходимо дать какой-то ответ, как мне это сделать?
Вот мой текущий код:

li = LayoutInflater.from(this); View editNickView = li.inflate(R.layout.dialog_edit_nick, null); AlertDialog.Builder editNickBuilder = new AlertDialog.Builder( this); editNickBuilder.setTitle(R.string.edit_nick); editNickBuilder.setView(editNickView); AlertDialog editNick = editNickBuilder.create(); editNick.setButton(getText(R.string.com_confirm), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { AlertDialog editNick = (AlertDialog)dialog; EditText et = (EditText)editNick.findViewById(R.id.et_nick_new); mCurUser.setName(et.getText().toString()) ; editNick(mCurUser); } }); editNick.setButton2(getText(R.string.com_cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { return; } }); return editNick; 

благодаря!

Для этого поместите свои кнопки в линейную компоновку или в макет и не используйте кнопки по умолчанию, предоставленные AlertDialog.

После установки кнопки в файле XML вы создаете объект кнопок, используя:

 Button b1 = editNickView.findViewById(<ID of button1>); 

И затем вы создаете слушателя для этой кнопки. Теперь в слушателе, если вы обнаружите, что пользователь ввел правильный ввод, вызовите:

 editNick.dismiss(); 

Для закрытия диалога, иначе диалог будет виден пользователю.

AlertDialog всегда закрывается при нажатии одной из его кнопок. Если вы не хотите, чтобы это произошло, не вызывайте setButton, просто поместите свои кнопки в свой собственный XML-макет. Проверьте предварительное условие и вызовите editNick.dismiss() чтобы закрыть диалоговое окно, когда это необходимо.

Некоторые фрагменты могут помочь:

 View editNickView = li.inflate(R.layout.dialog_edit_nick, null); .... final AlertDialog editNick = editNickBuilder.create(); Button button = (Button) editNickView.findViewById(R.id.your_button_id); button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { .... if(shouldClose) { editNick.dismiss(); } else { //Make a toast or something here. } } }); 
Intereting Posts