我已经通过不同的子 Activity 实现了TabActivity:

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);
...

到目前为止,没有问题,一切正常。我正在以编程方式在选项卡之间切换,用ActivityGroups等替换选项卡中的 Activity ,就像许多教程中所显示的那样。

但是我的问题是,当我要检查挥动手势时,我的poseDetector.onTouchEvent(event)总是返回false,因此没有注册任何手势。

这是我的gestureDetector的实现:
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;
  }
 }

事实是,当我在TabActivity之外启动这些 Activity (有四个基本 Activity ,有时我会切换到其他 Activity )时,此代码(以及击退检测)工作得很好。作为启动器 Activity 。但是我无法使其在TabActivity中工作。我已经尝试过将GestureDetector附加到TabActivity,但是它不起作用。我试图将GestureDetector附加到特定的 View (例如某些布局 View 或按钮,ViewFlippers等),但这是行不通的。
在调试时,我可以看到触摸事件已触发并且已注册了 Action ,但是并没有将其评估为猛击或任何其他手势。

所以我的问题是,在Android中使用带有Tabs的GestureDetectors是否有任何限制?就像我说的那样,这些手势已在TabActivity外部完美注册。

我将不胜感激知道答案的人的帮助。
如果有限制,那么有人如何解决该问题?

预先感谢您的回答。

最佳答案

看看here提到的答案。他几乎完成了与您相同的操作,但是如果您查看评分最高的答案的第一条评论,则Cdsboy会通过实现OnDown并返回true来使其正常工作。我不确定为什么需要这样做,但是它对我有用。

关于Android:GestureDetector与Tabs(TabActivity,Tabwidget)不起作用(gestureDetector.onTouchEvent(event)始终为false),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4394025/

10-09 08:00