Gestenerkennung bei Fragment

8

Ich habe eine Activity , die eine einzige Fragment enthält:

%Vor%

Meine Frage ist, wie kann ich Gesten erkennen? Ich habe versucht mit OnTouchListener , auch mit onInterceptTouchEvent Methode. Grundsätzlich möchte ich Swipes erkennen. Mein SwipeGestureDetector sieht so aus:

%Vor%

Dann registriere ich es in meinem Activity :

%Vor%

Leider wird keine Wischgeste erkannt. Wie kann ich das erreichen? Bitte schlage nicht vor, ViewPager zu verwenden, ich kann es nicht benutzen.

    
WonderCsabo 16.11.2013, 15:52
quelle

2 Antworten

4

Hier ist die Problemumgehung, die ich für dieses Problem gemacht habe.

Ich musste dispatchTouchEvent() method in meinem Activity überschreiben. Dies wird aufgerufen, wenn ein Berührungsereignis im Fenster auftritt.

%Vor%     
WonderCsabo 30.04.2014, 15:05
quelle
0

Die Antwort von WonderCsabo funktionierte nicht gerade für mich. Das Problem, das ich mit diesem Code hatte, war, dass ich in meiner Aktivität einen View-Pager und ein Fragment mit mehreren anklickbaren Ansichten darin hatte. Keiner der Click- oder Swipe-Handler wurde mit diesem Code aufgerufen, damit er meine Sachen kaputt machte. Anscheinend war das zu oft richtig. also blockierte das if (!) den Pager und das Fragment davon ab, ihre Berührungsereignisse zu empfangen.

Also habe ich versucht, einfach die if-Anweisung herauszunehmen und jetzt scheint es zu funktionieren. Hier ist die Aktivitätsklasse. Es hat einen View Pager und ein Fragment

%Vor%

Wenn ich das jetzt wie Android Detecting Common Gestures Docs erkläre, füge ich diesen Code hinzu.

%Vor%

Das Problem besteht darin, dass der Gestendetektor nur dort funktioniert, wo keine berührungssensitiven Ansichten wie mein Pager und Tasten vorhanden sind. Verwenden Sie stattdessen diesen Code

%Vor%

Was dann passiert, sind die Ansichten in Fragmenten, und der Pager der Ansicht kann alle Berührungsereignisse genauso erhalten, wie sie es normalerweise tun, aber ich erhalte auch Gestenereignisse in meinem Listener.

    
Marc 13.01.2015 20:24
quelle