onTouchListener两次执行操作

时间:2014-10-05 16:31:16

标签: android spinner listeners ontouch

我正在尝试使用文本(无按钮)创建一些字段,然后单击以打开datepicker对话框。 我完全是乞丐,我正在尝试简单的例子。

 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尝试过,结果是一样的。 有人能帮助我吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

改为使用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;
}

答案 1 :(得分:0)

感谢它听起来合乎逻辑,但是当我使用OnClick时,应用程序在初始化时感到沮丧。

 firstbirth.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

               DialogFragment dd1 = new DatePickerFragment();
               dd1.show(getFragmentManager(), "Select a date");
            }
 });

问题不在于DialogFragment,因为它在我使用onTouch事件时起作用。 谢谢:))