Android:AlertDialog中的按钮

时间:2011-05-05 09:42:17

标签: android android-widget

您好
在我的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;

谢谢!

2 个答案:

答案 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();

关闭对话框,否则,对话框将对用户可见。