2014-10-05 88 views
0

我正在尝试使用文本创建某个字段(无按钮)我点击打开日期选择器对话框。 我完全是begginer,我试着用简单的例子。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是微调,我试着用Edittext,结果是一样的。 任何人都可以帮助我吗?

在此先感谢!

回答

1

改为使用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; 
} 
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事件时起作用。 谢谢:)

+0

不知道你的意思是感觉下来。如果您想使用onTouch,请参阅我的答案中的编辑。 – pumpkee 2014-10-05 18:20:44

+0

我的意思是“不幸的是,应用程序..停止工作”。 – Filip 2014-10-05 19:04:19

+0

您的解决方案非常棒,它效果不错!谢谢 :) – Filip 2014-10-05 19:04:40