Android:AlertDialog显示两次而不是一次
我有一个android应用程序,当用户触摸或单击Android:AlertDialog显示两次而不是一次,android,alert,Android,Alert,我有一个android应用程序,当用户触摸或单击EditText时,EditText的内容显示在AlertDialog中。我添加了一个done按钮,但是警报对话框不会关闭。我必须按两次“完成”按钮。我不知道为什么会发生这种情况,有谁能提出一个比烤面包更好的选择吗 编码部分: 我在触摸屏上调用以下功能 public void setalert() { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
EditText
时,EditText
的内容显示在AlertDialog
中。我添加了一个done按钮
,但是警报对话框
不会关闭。我必须按两次“完成”按钮。我不知道为什么会发生这种情况,有谁能提出一个比烤面包更好的选择吗
编码部分:
我在触摸屏上调用以下功能
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\u DOWN
当用户用手指触摸edittext时
2.MotionEvent.ACTION\u UP
当用户从edittext中伸出手指时
要避免这种情况,请执行以下操作:
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
setalert();
}
}
其原因是触摸事件被调用两次: 1.
MotionEvent.ACTION\u DOWN
当用户用手指触摸edittext时
2.MotionEvent.ACTION\u 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();
}
这在您的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();
}
检查此更改您的onTouch那样..更改Listencer-使用onClickLictenerok。。将在单击时尝试此功能在单击时使用侦听器可以正常工作。谢谢当您尝试触摸按钮或任何控件到TouchListner调用2-3次时,您的对话框将打开2次。尝试在ontouchlistner中输入日志值,您会得到想法。检查此更改您的onTouch,就像那样..更改Listencer-使用onClickLictenerok。。将在单击时尝试此功能在单击时使用侦听器可以正常工作。谢谢当你试着触摸按钮或任何一个控件在TouchListner上打2-3次电话时,你的对话框就会打开2次。试着在ontouchlistner上输入日志值,你就会明白了。