您好
在我的Android应用程序中,我想从AlertDialog中的EditText小部件获取用户的输入。如果用户没有输入法律文本并单击确认按钮,则不应关闭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;
谢谢!
答案 0 :(得分:4)
单击其中一个按钮时,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.
}
}
});
答案 1 :(得分:3)
要执行此操作,请将按钮放在线性布局或布局中,不要使用AlertDialog提供的默认按钮。
在XML文件中设置按钮后,使用以下命令创建按钮的对象:
Button b1 = editNickView.findViewById(<ID of button1>);
然后为此按钮创建一个侦听器。现在在监听器中,如果您发现用户输入了正确的输入,请调用:
editNick.dismiss();
关闭对话框,否则,对话框将对用户可见。