2012-10-25 25 views
5

私は10回の同様の活動を行うために必要がある場合は、それがより良いIやるです:Android:多くのアクティビティを行う方が良いですか、オンザフライで変化する1つのアクティビティですか?

  • 10の活動と10のレイアウト?
  • 1アクティビティと10レイアウト?
  • 1アクティビティを変更して、表示/非表示のUIを変更しますか?

は私がのための答えを必要とする:

  1. パフォーマンス
  2. 形式
+0

おそらく、複数のアクティビティをコーディングする方が簡単で、OnResume()などのイベントから利益を得ることができます。アクティビティのための – user1032613

答えて

6

あなたが複数のアクティビティを使用する場合は、Androidのアクティビティスタックのメカニズムを使用することの利点を取得します。したがって、ユーザーが戻るボタンでナビゲートできるようにしたい場合は、それが最善の策です。

アクティビティが非常に似ている場合は、抽象クラスで共通コードを実装し、この共通クラスを継承してコードを共有することができます。

public abstract class CommonBehaviorActivity extends Activity { 
    protected void buildCommonThings() { 
     ((TextView)findViewById(R.id.title)).setText(getTitle()); 
     ((ImageView)findViewById(R.id.image)).setDrawable(...); 
     } 

    abstract protected String getTitle(); 
} 

public class MyActivity1 extends CommonBehaviorActivity { 
    ... 
    protected String getTitle() { 
     return "Title 1"; 
     } 
} 

のように...

編集:あなたは、すべてのサブアクティビティに見たいものを共有する方法を示すために、いくつかのサンプルコードを追加しました。たとえば、各アクティビティにリストがある場合は、getAdapter()メソッドのサブアクティビティで特定のアダプタを定義し、CommonBehaviorActivityのこのアダプタにリストをバインドするだけでなく、リスナーをバインドすることができます他の側では


)...上の、あなたがあなたの活動の間で非常に高速なスイッチを持ちたい、とあなたが見え、その後、ボタンで「戻る」を行くことができるようにする必要がない場合/眺めを失った方がいいかもしれません。

+0

はすべてクリアですがレイアウト用ですか?私はxmlレイアウトを行うとき、それは各レイアウトのために同じ "タイトル+アイコンの部分"のレイアウトを行うことができますか?私はこれがフラグメントのものであることを強調しています、そうですか? (私の英語のために申し訳ありません:) – Atomico

+0

私はそれを見つけました..他のXMLピースを使用するがあります。 – Atomico

1

多くのアクティビティを作成すると、過剰なif条件やelse条件に対処しないため、コードを読みやすく、デバッグしやすくなります。パフォーマンスオーバーヘッドはありません。アクティビティは速くロードされ、Androidはバックスタックを管理し、必要に応じて一時停止したアクティビティを強制終了してメモリを解放します(単一のケースではそうではありません)。

アクティビティが似ている場合は、フィーチャを別々のクラスに入れて、アクティビティ間で再利用することができます。レイアウトのためのアイデム、あなたはそれらを設計することができますので、共通の部品を再利用することができます。

+0

私は共通部分をどのように使用できますか?たとえば、各レイアウトに同じタイトル+イメージがある場合、レイアウトごとにどのように使用できますか? – Atomico

+0

上記の私の答えは、親クラスで共通の動作を共有する方法を示すサンプルコードで変更しました。 –

1

動的UIを表示する場合は、フラグメントを使用することもできます。フラグメント内のコンテンツを動的に変更することも、フラグメント自体を変更することもできます。特定のフラグメントを常に表示し、他のフラグメントを非アクティブにすることができます。この場合、1つのアクティビティと複数のフラグメントしか必要ありません。

これは、アプリのUIを描画する方法によって異なります。フラグメントの例が利用可能ですHere

+0

それはクールなサウンド..しかし、私は断片がアンドロイド2.3では正しく動作しないことを知っていますか? – Atomico

+0

No. 1.6 Android 1.6以降のフラグメント作業。サポートライブラリを使用できます。 Androidのブログ:[** Fragments For All **](http://android-developers.blogspot.com/2011/03/fragments-for-all.html)のこの記事を参照してください。 – AnkitSomani

関連する問題