2013-07-08 22 views
1

我有附加onTouchListener給它一個EditText:的EditText onTouch稱爲不止一次

m_outputField.setOnTouchListener(touchListener); 

現在我看到onTouch被稱爲3次,每次實際觸摸(點擊):

class MyTouchClickListener implements View.OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     //do something 

     return true; 
    } 

} 

我想我在這裏做錯了什麼,如何解決它(或至少忽略第二個和第三個調用)?

感謝

+0

您是否檢查了每次觸摸('event.getAction()')會得到什麼動作? – Luksprog

+0

如果你只想點擊按鈕一次,爲什麼不使用button.setOnClickListener(); ? –

+0

因爲只有在EditText有焦點時才調用它。 – Kostia

回答

9

這應該修復它:

class MyTouchClickListener implements View.OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     if(event.getAction()==MotionEvent.ACTION_UP) 
     { 
      //do something 
     } 
     return true; 
    } 

} 
+0

謝謝,它解決了它。 – Kostia

0

爲了避免這個問題,更換您從setOnClickListener() EDITTEXT到setOnFocusChangeListener()

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if(hasFocus){ 
      // Do Something Here.. 
     } 
    } 
});