Android - 从成员类控制活动

时间:2011-03-24 15:09:22

标签: android android-activity gesture gesturedetector

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

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

我的“解决方案”是为SwipeDetector创建一个构造函数,它将调用ActivityClass的{​​{1}}和Context作为参数。当知道这些信息时,很容易调用Activity,其中mParent是父活动。

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

谢谢!

此致 杰罗姆

2 个答案:

答案 0 :(得分:0)

您可以随时让您的手势探测器采用界面,以便您可以进行不同的活动。

interface MovableActivity {

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

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

class MyActivity extends Activity implements MovableActivity { ...

然后,您的滑动检测器的构造函数可以MovableActivity并在其上调用moveLeftmoveRight

答案 1 :(得分:0)

从你的描述中不清楚问题究竟是什么,但是阅读这些内容并查看教程,我认为你缺少的是教程中的SwipeDetector是Activity的内部类。这是调用moveScreenRight()moveSreenLeft()的唯一方式,它会调用Activity类的mFlipper成员。

所以代码看起来应该像

public class MyActivity extends Activity {

  // All the Activity overrides elided

  class SwipeDetector extends SimpleGestureListener {

    // all the SwipeDetector methods
  }
}

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