onTouchListener正在执行两次操作



我正在尝试制作一些带有文本的字段(没有按钮),单击它可以打开日期选择器对话框。我完全是一个乞丐,我正在尝试一个简单的例子。

 firstbirth.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                Toast.makeText(getApplicationContext(), "ahooj", Toast.LENGTH_LONG).show();
                return false;
            }
        });

firstbirth是spinner,我在Edittext中尝试过,结果是一样的。有人能帮我吗?

提前感谢!

请改用OnClickListener。

setOnClickListener(View.OnClickListener l)

OnTouchListeners将触发多个触摸事件(如向下触摸、向上触摸等),而OnClickListener只会被触发一次(onClick:))

如果出于某种原因想要使用OnTochListener,可以确保它只调用一次。

尝试:

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_UP {   // another option would be ACTION_DOWN for example
     Toast.makeText(getApplicationContext(), "ahooj", Toast.LENGTH_LONG).show();
     return true;
    }
return false;
}

谢谢,这听起来很合乎逻辑,但当我使用OnClick事件应用程序时,初始化时感觉很糟糕。

 firstbirth.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               DialogFragment dd1 = new DatePickerFragment();
               dd1.show(getFragmentManager(), "Select a date");
            }
 });

DialogFragment没有问题,因为当我使用onTouch事件时它可以工作。感谢:)

最新更新