Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnTouchListener一次单击即可接收2个事件_Android - Fatal编程技术网

Android OnTouchListener一次单击即可接收2个事件

Android OnTouchListener一次单击即可接收2个事件,android,Android,您好,我有两个EditText小部件,我想根据用户偏好更改其行为。用户应该能够更改EditText视图,以便弹出一个带有多个备选选项的弹出窗口。当用户想要使用列表进行输入时,我将设置onTouchListener 它工作得很好,只是当我单击一次时,onTouchListener会收到两个事件,因此会出现两个弹出对话框。这是OnTouchListener: private OnTouchListener mInputListOnTouckListener = new View.OnTouchLi

您好,我有两个EditText小部件,我想根据用户偏好更改其行为。用户应该能够更改EditText视图,以便弹出一个带有多个备选选项的弹出窗口。当用户想要使用列表进行输入时,我将设置onTouchListener

它工作得很好,只是当我单击一次时,onTouchListener会收到两个事件,因此会出现两个弹出对话框。这是OnTouchListener:

 private OnTouchListener mInputListOnTouckListener = new View.OnTouchListener()
 {
        EditText et;
        @Override
        public boolean onTouch(View ve, MotionEvent me)
        {   
            final CharSequence[] items = {"1", "2", "3"};
            et = (EditText)ve;
            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle("Pick a number");

            builder.setItems(items, new DialogInterface.OnClickListener()
            {   
                public void onClick( DialogInterface dialogInterface, int item ) 
                {
                    et.setText(items[item]);
                    return;
                }
            });

            builder.create().show();
            return true;
        }
 };

PS:是的,我想返回true,因为它会阻止键盘显示。

当你触摸屏幕时,你可能会得到一个ACTION\u DOWN事件,当你释放它时,你可能会得到一个ACTION\u up事件。使用MotionEvent上的方法来确定您正在获取的事件,并仅在ACTION\u UP(动作向上)上执行操作。例如,触摸屏幕时,您可能会获取ACTION\u DOWN(动作向下)事件,释放屏幕时,您可能会获取ACTION\u UP(动作向上)事件。使用MotionEvent上的方法来确定要获取的事件,例如,只在ACTION\u UP上执行操作