ich meine TabActivity mit verschiedenen Kind-Aktivitäten umgesetzt haben: WerkeAndroid: GestureDetector nicht funktioniert (gestureDetector.onTouchEvent (event) immer false) mit Tabs (TabActivity, TabWidget)
intent = new Intent().setClass(this, MyChildTabActiviy.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = getTabHost.newTabSpec("tag").setIndicator("indicator", getResources().getDrawable(R.drawable.icon)).setContent(intent);
getTabHost.addTab(spec);
...
Bisher keine Probleme, alles perfekt fein. Ich wechsle programmgesteuert zwischen Tabs und ersetze Aktivitäten in Tabs mit ActivityGroups, etc., 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 falsch zurückkehrt, also keine Geste registriert wird.
Diese meine Implementierung von gestureDetector ist:
public class MyChildTabActiviy extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// ... building views, controls, etc.
GestureDetector gestureDetector = new GestureDetector(this, new MyGestureDetector());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// left to right swipe and right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//... fling logic ...
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
//... fling logic ...
return true;
}
return false;
}
}
Die Sache ist, dass dieser Code (und auch die fling Erkennung) arbeitet völlig in Ordnung, wenn ich diese Aktivitäten fange (es vier grundlegende Aktivitäten sind, (manchmal wechsele ich zu anderen Aktivitäten) 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.
Also meine Frage ist, gibt es irgendwelche Einschränkungen hinsichtlich der Verwendung von GestureDetectors mit Tabs in Android? Wie gesagt, die Gesten sind perfekt außerhalb einer TabActivity registriert.
Ich würde sehr die Hilfe von jemandem 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.
Mögliches Duplikat von [Fling Gestenerkennung auf Gitterlayout] (http://stackoverflow.com/questions/937313/fling-gesture-detection-on-grid-layout) – BergQuester