我有一个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();

}

===============>>#1 票数:4

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

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();
    }
}

===============>>#2 票数: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();

                }

  ask by Tushar Narang translate from so

未解决问题?本站智能推荐: