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