Android: GestureDetector funktioniert nicht (GestenDetector.onTouchEvent (event) immer falsch) mit Tabs (TabActivity, Tabwidget)

9

Ich habe meine TabActivity mit verschiedenen untergeordneten Aktivitäten implementiert:

%Vor%

Bisher keine Probleme, alles funktioniert einwandfrei. Ich wechsle programmgesteuert zwischen Tabs und ersetze Aktivitäten in Tabs mit ActivityGroups, etc. genau so, wie es in vielen Tutorials gezeigt wird.

Aber mein Problem ist, dass, wenn ich nach einer Fling-Geste suchen möchte, mein GestenDetector.onTouchEvent (event) immer false zurückgibt, also keine Geste registriert wird.

Dies ist meine Implementierung von Gestendetektor:

%Vor%

Die Sache ist, dass dieser Code (und auch die Flingerkennung) perfekt funktioniert, wenn ich diese Aktivitäten starte (es gibt vier grundlegende Aktivitäten, die ich manchmal zu anderen Aktivitäten umschalte) außerhalb einer TabActivity, z. als Startaktivität. Aber ich kann es nicht innerhalb einer TabActivity zum Laufen bringen. Ich habe bereits versucht, den GestureDetector an die TabActivity anzuhängen, aber es funktioniert nicht. Ich habe versucht, den GestureDetector an bestimmte Ansichten wie Layoutansichten oder Schaltflächen, ViewFlippers usw. anzuhängen, aber es funktioniert einfach nicht. Wenn ich debugge, kann ich sehen, dass das Berührungsereignis ausgelöst wird und eine Bewegung registriert wird, aber es wird nur nicht als ein Fling oder eine andere Geste ausgewertet.

Meine Frage ist also, gibt es irgendwelche Einschränkungen hinsichtlich der Verwendung von Gestenerkennung mit Tabs in Android? Wie gesagt, die Gesten sind perfekt außerhalb einer TabActivity registriert.

Ich würde die Hilfe von jemandem sehr schätzen, der die Antwort kennt. Wenn es eine Beschränkung gibt, wie könnte jemand eine Abhilfe für dieses Problem bekommen?

Vielen Dank im Voraus für die Antworten.

    
einschnaehkeee 09.12.2010, 01:23
quelle

2 Antworten

20

Sehen Sie sich die Antwort hier an. Er ist ziemlich genau dasselbe wie du, aber wenn du dir den ersten Kommentar zu der bestbewerteten Antwort ansiehst, hat Cdsboy es geschafft, OnDown zu implementieren und true zurück zu geben. Ich bin mir nicht sicher, warum das nötig ist, aber es hat für mich funktioniert.

    
Abhinav Manchanda 11.12.2010, 13:03
quelle
7

Als Ergänzung zu @Abhinavs Antwort (dass BTW auch mir geholfen hat) möchte ich sagen, dass ich denke, dass onDown() überschrieben werden muss, da die Standardimplementierung in SimpleOnGestureListener false zurückgibt. Da ACTION_DOWN der erste ist, der den Listener erreicht, würde es das Ereignis verwerfen, was auch immer es ist.

    
bigstones 11.12.2010 16:49
quelle

Tags und Links