1

mCruiseOn プラットフォームを使用してカープール アプリケーションを開発しています。コードを作成する必要があるアクティビティが 2 つあります。両方のアクティビティのコード/フローと機能は 90% が同じです。レイアウト xml を作成して両方のレイアウトに含めることができますが、そのコード部分を管理するにはどうすればよいですか。その意図は、コードを複製するのではなく、クリーンで管理しやすい状態に保つことです。

findViewById、setOnClickListener、および onClick メソッドを管理するための共通コードが必要です。例として、どちらのアクティビティも GPS で開始位置と終了位置を取得します。両方のアクティビティには、時間/日付のダイアログ ボタンがあります。

いくつかの考え

  1. GetGPSAndTimeActivity では、すべての findViewById、onClickListener、onCreateDialog を実行します。次に、 GetGPSAndTimeActivity から拡張する必要がありますか?
  2. Android 2.3.3 以前でFragment のような Fragments を使用する

私はオプション1を好みます。

4

1 に答える 1

1

それはあなたの状況によって異なります。いくつかのことを行うアクティビティ A と、A とまったく同じことを行うアクティビティ B があるとしましょう。

その場合、アクティビティ B にアクティビティ A を拡張させることができます。B は足りないものを追加するだけです。

アクティビティ A と B に多くの共通点があるが、わずかな違いもある場合、正確には、アクティビティ A に B が必要としないコードが含まれている場合、アクティビティ A と B の両方に対して 1 つの抽象基本クラス C を作成する必要があります。コードの共通サブセットのみ。A と B が C を拡張し、A と B にそれぞれの追加コードを追加します。

フラグメントを使用するかどうかについては、私はそれを選びます。長期的には、タブレットや複数の画面サイズをサポートすることでトラブルが減り、さまざまな状況で簡単に再利用できるようになります。

あなたの上司/クライアントが突然、Google Play でおなじみのすばらしい ViewPager 機能 (画面を左右にスワイプしてカテゴリを切り替える) を必要としているとします。そもそもフラグメントを使用していた場合、この変更は非常に簡単かつ迅速に行うことができます。代わりにアクティビティを使用していた場合、大量のコードを再配置する必要があります。

于 2012-07-12T17:59:03.810 に答える