[英]Android : AlertDialog shown twice instead of once
我有一个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. MotionEvent.ACTION_DOWN
当用户将手指放在Edittext上时。
2. MotionEvent.ACTION_UP
当用户从edittext抬起手指时。
为了避免这种情况,请执行以下操作:
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
setalert();
}
}
这在您的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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.