サイト移転のお知らせ:http://techbooster.org/に移転しました

ActivityGroupをつかって複数Activityを表示する

1月 11, 2011   //   by @mhidaka   //   アプリケーション  //  1 Comment

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" />

関連する記事:

Sponsored Link

1 Comment

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です