2011-02-01 7 views
8

私のアプリケーションには14のアクティビティがあります。その9つのアクティビティのうち、カスタムタイトルバーとタブペインが含まれています。ここでは、カスタムタイトルバーとタブペインコード(つまりレイアウトとそのアクティビティ固有のコード)を含む各アクティビティに冗長コードではなく、この共通コードを1か所で書く必要があります。Androidのアクティビティの一部に共通のコードを作成するにはどうすればよいですか?

どうすればよいですか?

答えて

11

一般的な方法は次のとおりです。

  • は、そのクラス
  • 内部の定型的なコードを入れActivity
  • を拡張して、たとえば、呼ばれるスーパークラス、CommonActivityを作成します次に、あなたの活動はCommonActivity代わりのActivityを拡張します:

ここでは簡単な例:

public class CommonActivity extends Activity{ 
    public void onCreate(Bundle b){ 
     super.onCreate(b); 
     // code that is repeated 
    } 

    protected void moreRepeatitiveCode(){ 
    } 
} 

そして、あなたの現在の活動は:

public class AnActivity extends CommonActivity{ 
    public void onCreate(Bundle b){ 
     super.onCreate(b); 
     // specific code 
    } 
} 
+0

を追加することを忘れないでください 'super.onCreateは、(B)'関数、またはコンパイラの身体に動揺となります。 –

+0

良いキャッチ、ポール。まあ、super.onCreate(b)を忘れてしまっても、コンパイラは不平を言うことはありませんが、それは完全に正当ですが、スーパークラスの定型コードを実行したいからです。 – Cristian

+0

スーパークラスへの呼び出しをスキップすることはできますが、アクティビティクラスのライフサイクルメソッドを使用しないと実行時に失敗します。 – Cristian

1

うーん...一般的なコードは常にActivityクラスが、普通のクラスである必要はありません。共通コードクラスを参照して、必要に応じてこれらのメソッドを呼び出すことができます。

私はこれで正しくexampleですか?私たちは活動のライフサイクルの世話をし、私たちは、ファイルをマニフェストにそれを追加に忘れていない場合、我々は提案の上、活動のようにそれを必要とする場合はもちろん

は完璧に動作します。

一般的に、アクティビティは、UIの作成、イベントの発生の処理、ビジネスロジックやその他のアクションの実行をアプリケーション内の他のコンポーネントに任せてください。

乾杯

関連する問題