8

おい!(ここから長文失礼します)

基本的に同じコードに基づいたいくつかのアプリケーションを作成しています。

各アプリケーションには違いがあり、一部には新しいアクティビティがあり、すべてに異なるリソースが割り当てられます。

すべての共通コードを 1 か所に配置できるように、Android ライブラリ プロジェクトを使用しようとしています。そのため、大規模な変更は一度だけ行うだけで、すべてのプロジェクトが更新されます。

さて、リソースは簡単な解決策です。メイン アプリケーションで各リソースを定義するだけで、命名規則が同じである限り、これらのリソースはライブラリ プロジェクトのリソースをオーバーライドします。

さて、私の質問は、クラス以外で同じことを行うにはどうすればよいですか? たとえば、すべてのビューに共通するコードのラッパーとしてベース ビューを使用することはできません。この中で、私は様々な活動を開始します。異なる UI と機能が含まれるため、3 つのアプリケーションすべてが異なるアクティビティを起動する必要がある場合はどうすればよいでしょうか? これについてどうすればいいですか?ライブラリ プロジェクトは、メイン プロジェクトが既にコンパイルされているため、別のアクティビティを使用する必要があることを認識しません。

私が考えたいくつかの解決策がありますが、他の誰かが何かアイデアを持っているかどうか知りたいですか? ここでのフィードバックは非常に役立ちます。

  1. 起動されるライブラリ プロジェクトのアクティビティには、ロードされるクラスへの参照が格納されます。これは、起動時にメイン アプリケーションで定義されます。これは、ライブラリ プロジェクトがこのアクティビティを呼び出したときで、指示されたものを読み込むことができます。

  2. ライブラリ プロジェクト アクティビティ内で変更されないすべての機能を残します。次に、このアクティビティを拡張し、onCreate をオーバーライドして、ここで必要なこと (さまざまなレイアウトの読み込み、ビューの設定など) を行います。ライブラリ プロジェクトではなくメイン アプリケーションでほとんどのエントリ ポイントを定義する必要があるため、これには欠点があります。

私の問題がここにあることをフォローしていただければ幸いです。これについて説明が不十分であるかどうか尋ねてください。

ありがとう、

アダム

4

1 に答える 1

0

もっと簡単に言えば、そのような柔軟性を実現するには、継承または構成を使用する必要がありますか?

こういう構造クエストもありました。通常、適切なパターンを再利用し、必要なコード部分を細かく分割することで解決します。つまり、違いがビューであることがわかっている場合は、共通のインターフェイスに対して実装し、基本アクティビティでインターフェイスを参照するいくつかの区別されたクラスにそれを抽出します。

あなたのためのいくつかのリンク:

少なくとも私があなたの質問をどのように理解しているかからすると、これはOOP設計の質問です。

于 2011-02-10T16:06:53.007 に答える