ActivityGroupをつかって複数Activityを表示する
Androidでは通常、同時に表示できるActivityは1つだけです。ActivityGroupを使うと複数のActivityを同時に表示できます。サンプルプロジェクトはTechBoosterのこちら(SVNが必要です)からどうぞ。

縦画面と横画面での表示内容を変更する、2カラムの画面構成など柔軟なアプリケーションを作ることができます。またActivityGroupはTabActivityやListActivityと同様にActivityを継承したクラスです。Activityと同じように簡単に使えます。
サンプルのアプリケーションはmainとなるActivityのほかに、2つのアクティビティを表示しています。

Activityの構成
- ActivityGroup
- Sample1Activity( /res/layout/sample1.xml)
- Sample2Activity( /res/layout/sample2.xml)
サンプルコードは続きから
ActivityGroupで、複数のActivityを呼び出すコードは以下の通りです。
public class ActivityGroupActivity extends ActivityGroup {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Activityを呼び出す準備
LocalActivityManager am = getLocalActivityManager();
LinearLayout layout = (LinearLayout)findViewById(R.layout.activity_layout);
//LocalActivityManager#startActivityはIntentを使う
Intent intent = new Intent(this, Sample1Activity.class);
Window window = am.startActivity("Sample1_UniqueString", intent);
//Viewの取得
View view = window.getDecorView();
layout.addView(view);
/* 2つめのActivity */
Intent intent2 = new Intent(this, Sample2Activity.class);
Window window2 = am.startActivity("Sample1_UniqueString", intent2);
View view2 = window2.getDecorView();
layout.addView(view2);
}
}
LocalActivityManagerを利用して、LinearLayoutにActivityを追加していきます。Activityの呼び出しにはLocalActivityManager#startActivityを使います。startActivityの第1引数はユニークなStringで指定してください。startActivityで起動するActivityを管理するための文字列です(ActivityはsingleTop指定でマルチタスク化されていない可能性等、特定が必要なケースがある)。
- Window LocalActivityManager#startActivity( String id, Intent intent)
17行目では取得したWindowを使ってActivityのViewを取得します。Layoutに追加して処理は完了です。
AndroidManifest.xml
ActivityGroupで利用する場合でも、AndroidManifest.xmlにActivity要素を追加してください(追加を忘れるとエラー終了します)
AndroidManifest.xml
<activity android:name=".Sample1Activity" android:label="Sample1Activity" />
<activity android:name=".Sample2Activity" android:label="Sample2Activity" />