0

私のプロジェクトには 2 つのアクティビティがあります。たとえば、アクティビティ A とアクティビティ B です。A と B はどちらも同じスーパークラス BaseActivityを拡張します。
この場合、アクティビティ A が開かれている場合、スーパークラス メソッド onCreate() が呼び出され、アクティビティ A の onCreate() が続くことがわかっています。

親 BaseActivity クラスの onCreate() メソッドで、どの子アクティビティが開始されたかをどのように判断できますか?

4

2 に答える 2

1

別のアプローチをお勧めします。基本的に継承は行いません。代わりにコンポジションを使用してください。拡張する必要があると思われる操作のほとんどは、コンテキストへの参照が必要なだけであることを思い出してください。アクティビティはコンテキストから拡張されます。したがって、実際には、アクティブなコンテキストを参照するクラスでほとんどの基本機能を提供できます。継承を行う必要はまったくありません。

したがって、ActivityA と ActivityB の間でいくつかの機能を共有したい場合は、HelperC に入れるだけです

HelperC.someOperation(Context c, otherParams)

HelperC は、一部の基本アクティビティで実行できることは何でも実行できます。最終的に、ベース アクティビティは決して存在しません。常にインスタンス化されたバージョン A または B になります

于 2012-06-06T22:44:13.743 に答える
0

このようにするべきではないと思います。拡張のアイデアを覚えている限り、スーパークラス メソッドにはユニバーサル コードのみを含める必要があります。子クラスに異なるコードを配置する方がはるかに簡単で、より適切であると私は信じています。

親の onCreate() でいくつかの値を初期化してから、子の値を再設定できます。

于 2012-06-06T22:27:29.923 に答える