0

GestureDetectorを個別に定義する代わりに、すべてのアクティビティにGestureDetetorを実装するためのより良い方法はありますか?

私のシナリオでは、10のアクティビティがあり、それらすべてにジェスチャに対して同じ動作をさせたいと思います。たとえば、右にスワイプすると現在のアクティビティが終了し、ユーザーはメインのアクティビティに戻ります。

私の選択肢は

  1. 私の10のアクティビティのそれぞれでGestureDetectorを定義する
  2. アクティビティを拡張し、そこにGestureDetectorを追加してから、カスタムアクティビティから拡張します。

この動作を実装するためのより良い方法はありますか?

4

1 に答える 1

0

これを行う簡単な方法の1つは、すべてのアクティビティが拡張する基本クラスにGestureDetectorを設定することです。これは一般的なアプローチですが、毎回新しいインスタンスを作成します。

ターゲットAPIに応じて、これを行う別の方法はを使用することApplication.registerActivityLifecycleCallbacksです。詳細については、Applicationクラスのドキュメントを参照してください。これはAPI14以降です。

ドキュメントを読むことを忘れないでください:

public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacksコールバック)

コンテキストのベースアプリケーションに新しいComponentCallbacksを追加します。これは、アクティビティおよび他のコンポーネントのComponentCallbacksメソッドが呼び出されると同時に呼び出されます。将来必要に応じて、必ずunregisterComponentCallbacks(ComponentCallbacks)を使用する必要があることに注意してください。これは削除されません。

その後、ActivityLifecycleCallbacksで詳細を確認してください。対応するアクティビティを引数として持つ、すべての一般的なonCreate、start、resumeなどのコールバックがあります。

于 2013-03-20T17:46:52.340 に答える