Android:AlertDialog显示两次而不是一次

时间:2014-04-21 05:27:53

标签: android alert

我有一个Android应用,当用户触摸或点击EditText时,EditText的内容会显示在AlertDialog中。我向其添加了完成Button,但AlertDialog并未解散。我必须按两次完成按钮。我不知道为什么会这样,除了吐司以外,还有谁能提出更好的选择吗?

编码部分:     我在触摸时调用了以下功能。

public void setalert()
{
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            mContext);

    // set title


    // set dialog message
    alertDialogBuilder
    .setMessage(etDesc.getText().toString())
    .setCancelable(false)


    .setNegativeButton("Done",new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int id) {
            // if this button is clicked, just close
            // the dialog box and do nothing

            dialog.cancel();                                                            

        }
    });                 

    // show it
    alertDialogBuilder.show();

}

2 个答案:

答案 0 :(得分:3)

因为触摸事件被调用两次:

1。MotionEvent.ACTION_DOWN

当用户指责edittext时。

2。MotionEvent.ACTION_UP

当用户从edittext手指向上时。

要避免这样做:

@Override
public boolean onTouch(View view, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
       setalert();
    }
}

答案 1 :(得分:2)

在您的OnCreate下

ettext.setOnClickListener(new View.OnClickListener() 
            {
                    @Override
                    public void onClick(View v) 
                    {
                        setalert2();
                    }

                });

这是您的计划

 public void setalert2()
        {
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    mContext);

                // set title


                // set dialog message
                alertDialogBuilder
                    .setMessage(ettext.getText().toString())
                    .setCancelable(true);







                    // show it
                alertDialogBuilder.show();

                }