2014-10-05 114 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