2014-07-25 10 views
49

Ho creato un onTouchListener. onTouch metodo throws Purtroppo() me un avvertimento:onTouchListener: onTouch deve chiamare Visualizza # performClick quando viene rilevato un clic

com/calculator/activitys/Calculator$1#onTouch should call View#performClick when a click is detected 

Cosa significa? Non ho trovato alcuna informazione su questo avviso. Ecco il codice completo:

LinearLayout llCalculatorContent = (LinearLayout) fragmentView.findViewById(R.id.calculator_content); 

llCalculatorContent.setOnTouchListener(new View.OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Tools.hideKeyboard(getActivity(), getView()); 
     getView().clearFocus(); 
     return false; 
    } 
}); 
+6

si vuole sbarazzarsi del warning basta chiamare 'v.performClick()'. L'implementazione suonerà un po '(se lo hai abilitato sul tuo dispositivo) e chiami onClickListener, che probabilmente non hai sovrascritto – Blackbelt

+0

La tua risposta è stata corretta. Grazie –

risposta

63

Qui si va:

public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     //some code.... 
     break; 
    case MotionEvent.ACTION_UP: 
     v.performClick(); 
     break; 
    default: 
     break; 
    } 
    return true; 
} 
+10

non dovrebbe essere chiamato solo quando l'evento == MotionEvent.Action_UP, o qualcosa del genere? Inoltre, non restituire "false" chiama effettivamente il metodo di clic originale, quindi in realtà dovresti restituire "true" invece? –

+0

@androiddeveloper ha ragione su questo, ho modificato la risposta – longilong

+0

@longilong Bene se lo desideri puoi anche impostarlo per usare l'interruttore, ma quello è logicamente lo stesso ... –