0

首先,我是 Android 编程的初学者,我有一些 Java 基础,我查看了 SO 并用谷歌搜索了我的问题,但没有匹配。我一直在尝试使以下教程工作几个小时。该项目由两个类组成:一个活动和一个扩展的 SwipeDetector 类SimpleOnGestureListener

摩托罗拉网站提供的解决方案有效,但是当我在检测到左右滑动时尝试“修改”活动时遇到了麻烦。为了测试它,我希望在滑动时会显示一些 Toasts。

我的“解决方案”是为 SwipeDetector 创建一个构造函数,它将调用的ActivityClass和作为参数。当知道这些信息时,很容易调用mParent 是父 Activity 的位置。ContextActivitymParent.moveScreenRight();

我知道这个解决方案看起来很糟糕,我希望我能在这里得到一些建议。如果需要,我可以提供有关这两个类实现的更多信息。

谢谢 !

问候,杰罗姆

4

2 回答 2

0

你总是可以让你的手势检测器采用一个界面,这样你就可以传递不同的活动。

interface MovableActivity {

    public void moveLeft();
    public void moveRight();
}

然后在你的实际活动implement中 MovableActivity

class MyActivity extends Activity implements MovableActivity { ...

然后你的滑动检测器的构造函数可以接受并MovableActivity调用它。moveLeftmoveRight

于 2011-03-24T15:19:45.510 回答
0

从您的描述中不清楚问题是什么,但是在字里行间阅读并查看教程,我认为您缺少的是教程中的 SwipeDetector 是 Activity 的内部类。moveScreenRight()这是它可以调用or的唯一方法moveSreenLeft(),它调用mFlipperActivity 类的成员。

所以代码应该看起来像

public class MyActivity extends Activity {

  // All the Activity overrides elided

  class SwipeDetector extends SimpleGestureListener {

    // all the SwipeDetector methods
  }
}

没有使 SwipeDetector 成为内部类,实际上无法避免传递对其构造函数的引用以启用 Activity 上的调用方法。最简洁的抽象方法是使用 Joseph Earl 建议的接口解决方案。

于 2011-03-24T15:48:33.713 回答