0

有没有更好的方法来为所有活动实现 GestureDetetor 而不必单独定义 GestureDetector?

在我的场景中,我有 10 个活动,我希望它们都对手势具有相同的行为。例如,向右滑动将结束当前活动并将用户带回主要活动。

我的选择似乎是

  1. 在我的 10 个活动中定义 GestureDetector
  2. 扩展 Activity 并在那里添加一个 GestureDetector ,然后从我的自定义活动中扩展。

有没有更好的方法来实现这种行为?

4

1 回答 1

0

一种简单的方法是将 GestureDetector 设置在所有活动都从其扩展的基类中。这是一种典型的方法,但每次都会创建一个新实例。

另一种方法是使用Application.registerActivityLifecycleCallbacks. 您可以在Application 类文档中找到更多信息。这是 api 14+。

不要忘记阅读文档:

public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks 回调)

在 Context 的基础应用中添加一个新的 ComponentCallbacks,它会在调用活动和其他组件的 ComponentCallbacks 方法的同时被调用。请注意,您必须确保在将来适当的时候使用 unregisterComponentCallbacks(ComponentCallbacks);这不会为您删除。

完成此操作后,只需检查ActivityLifecycleCallbacks以获取更多信息。您已经获得了所有典型的 onCreate、start、resume 等回调,并将相应的活动作为参数。

于 2013-03-20T17:46:52.340 回答