2012-02-03 13 views
0

AndroidManifestでさまざまなアクティビティ(たとえば.ActivityA.ActivityB)を宣言し、同じクラスファイルを使用することがAndroidで可能かどうかは疑問でした。Androidでは、同じアクティビティで同じクラスファイルを使用できますか?

これはなんとか実現可能ですか?

可能な解決策の1つは、基本クラスであり、その基本クラスから継承する他のクラスファイルを作成することです。しかし、複数のクラスファイルを持つ以外の方法はありますか?

私が必要とする両方のアクティビティでは、コードはほぼ同じである必要があります。呼び出されているアクティビティに応じて、ここではifsの2つのペアが必要になる場合があります。

どのようにこの問題を解決しますか?

[EDIT]

私はそのことについて申し訳ありませんが、十分に自分自身を明らかにしたとは思わない反応から判断します。 しかし、私は明らかに異なる活動をする必要があります。インテントで異なる値を渡すものは1つではありません。

答えて

1

可能な解決策の1つは、基本クラスであり、次にその基本クラスを継承する他のクラス ファイルを作成します。

  • これは最適な実装です。

ここでIFSのカップルといえ呼ばれて 活動に応じて、そこに必要になることがあります。

+0

私は州のパターンによってちょっと混乱しています。私の状況にはまったく何のメリットがありますか(多分私は本当にその目的を得られなかったかもしれません)。 –

0

アクティビティへのアクセス方法によって異なります。アプリケーション内のロジックによっては、異なるActivityサブクラスを作成していますか?アプリケーションの外部から異なるインテントに応答する必要がありますか?最初のケースでは、単一のアクティビティクラスを簡単に再利用して、条件付き情報(ここではifsを探しているもの)をインテントを通過するバンドルに渡すことができます。それ以外の場合は、独自のファイルに別々のアクティビティサブクラスを作成するのに適しています。

なぜファイルごとに複数のクラスに焦点を当てるのですか?

+0

私は明示的に異なる活動をする必要があります(私の質問を更新しました)。申し訳ありませんが、私はあなたの最後の質問を理解していません... –

+0

あなたは異なる明示的な活動が必要だと言いますが、なぜ同じクラスファイルにそれらを持たせることが重要であるかは言いませんでした。 –

+0

コードは基本的に同じで、異なるファイル間でコードを繰り返す必要がないためです。そのための共通の解決策は基本クラスであり、そのクラスから私の活動を拡張していますが、同じクラスファイルに対して2つのアクティビティを宣言できる別の方法があるかどうかは疑問です。多分マニフェストや何かの "トリック"と。 –

0

共通の機能を持つabstract class CommonActivity extends Activityを作成することができます。アクティビティAとBの両方がこれを拡張します。マニフェストでは、共通のものがなければ、AとBに言及する必要があります。

0

私が必要とする両方のアクティビティでは、コードはほぼ同じである必要があります。呼び出されているアクティビティに応じて、ここやそこにいくつかのifが必要になるかもしれません。

あなたが何をどのように呼び出しているかに基づいて変更する必要がわずかな場合は、Intentを使用して同じアクティビティクラスを使用して値を渡します。呼び出し中にあなたがして、 "A" タイプのために "CommonActivity" を呼び出しているとし、 "CommonActivity" 使用:あなたのCommonActivityで

Intent intent = new Intent(this, CommonActivity.class); 
intent.putExtra("calledForType", "A"); 

String calledForType = ""; 
public void onCreate(Bundle savedInstanceState) { 
    ...... 
    calledForType = this.getIntent().getStringExtra("calledForType"); 
    calledForType = calledForType.toUpper(); // Better for comparing later 
} 

さて、あなたはの場合とdifferncesを処理する必要がどこに

if (calledForType.equals("A")) { 
    // Do This For A 
} else if (calledForType.equals("B")) { 
    // Do this for B 
} 

// Do this for common 

このようにして、N個のアクティビティを処理できます。

+0

私は明示的に別の活動が必要です(私の質問を更新しました)。 –

+0

@RicardoAmaral、もしあなたが異種の活動をしなければならないのなら、何が問題なのですか?最良の選択肢は、BaseActivityを使用してアクティビティを拡張することです。ほぼすべての類似点のために。 ActivityA、....クラスでのみ必須です。 – Tvd

+0

それ自体は問題ではありませんが、私はAndroidフレームワークが開発者に提供するすべての可能性を知りませんし、より良い/より簡単な方法があるかどうか尋ねることにしました。それで全部です。 –

関連する問題