2012-11-10 4 views
5

Ich versuche, eine Funktion zu entwickeln, bei der ein einzelner Antippen eines Elements eine Absicht auslöst, um zu einer anderen Aktivität zu gehen, und ein langes Drücken oder Doppeltippen des Elements etwas anderes bewirkt, wie zB das Editieren des Textes.Android: Zwei verschiedene Ereignisse für Einzeltippen und langes Drücken/Doppeltippen?

Bis jetzt bin ich nur in der Lage, beides gleichzeitig zu erreichen, aber nicht einzeln. Hat jemand irgendwelche Ideen?

public boolean onTouchEvent(MotionEvent e) { 
    return gestureScanner.onTouchEvent(e); 
} 


public boolean onSingleTapConfirmed(MotionEvent e) { 
    Intent i = new Intent(getContext(), SecondClass.class); 
    getContext().startActivity(i); 

    return true; 
} 

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } 
public void onLongPress(MotionEvent e) { 
    Toast.makeText(getContext(), "Edit feature here", Toast.LENGTH_SHORT).show(); 

} 
+0

Postsomekode, damit ich es korrigieren kann – RajeshVijayakumar

Antwort

6

Ich schaffte es, das Problem zu lösen. Es stellte sich heraus, dass ich nur den Rückgabewert von false zu true im Handler onDown() ändern musste.

public boolean onTouchEvent(MotionEvent e) { 
    return gestureScanner.onTouchEvent(e); 
} 

public boolean onSingleTapConfirmed(MotionEvent e) { 

    Intent i = new Intent(getContext(), SecondClass.class); 
    getContext().startActivity(i); 

    return true; 
} 

public boolean onDown(MotionEvent e) { return true; } 


public void onLongPress(MotionEvent e) { 
    Toast.makeText(getContext(), "Edit Feature", Toast.LENGTH_SHORT).show(); 

} 
+0

Arbeitete auch für mich. –

4

Verwenden Sie ein GestureDetector, hat die SimpleOnGestureListener die Methoden, die Sie mit onSingleTapConfirmed() wollen, onLongPress() und onDoubleTap().

+2

Ich habe einen GestureDetector verwendet. Wenn ich meine Absicht in die onSingleTapConfirmed() -Methode setze, macht sie nichts. Es macht nur die onLongPress() Arbeit auf einen einzigen Tipp: –

+0

Ich habe den Code hinzugefügt. –

+0

Mit welcher Art von View fügen Sie das hinzu? Es sieht so aus, als ob Sie ein TextView möchten, das mit einem langen Klick ein EditText werden kann. – Sam