2014-07-25 8 views
49

Ich habe eine onTouchListener erstellt. Leider OnTouch() -Methode throws mir eine Warnung:onTouchListener Warnung: onTouch sollte View # performClick aufrufen, wenn ein Klick erkannt wird

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

Was bedeutet dies? Ich habe keine Informationen über diese Warnung gefunden. Hier ist der vollständige Code:

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

Sie nur die Warnung loswerden wollen rufen 'v.performClick()'. Die Implementierung wird ein wenig Sound (wenn Sie es auf Ihrem Gerät aktiviert haben) und rufen Sie den OnClickListener, die Sie wahrscheinlich nicht überschrieben haben – Blackbelt

+0

Ihre Antwort war richtig. Vielen Dank –

Antwort

63

Hier gehen Sie:

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

sollte es nicht nur aufgerufen werden, wenn das Ereignis == MotionEvent.Action_UP, oder so ähnlich? Würde "false" auch nicht die ursprüngliche Klickmethode aufrufen, also sollten Sie stattdessen "true" zurückgeben? –

+0

@androiddeveloper stimmt damit, ich redigierte die Antwort – longilong

+0

@longilong Nun, wenn Sie möchten, können Sie auch einstellen, um Switch-Fall zu verwenden, aber das ist logisch das gleiche ... –

Verwandte Themen