世界を目指せ!Androidアプリ開発入門

第5回 アクティビティの制御と明示的インテント

この記事を読むのに必要な時間:およそ 4 分

ソースコードの準備

もう少し凝った画面にしたいのですが,ここではこれぐらいにして,次にソースコードを用意します。

[ファイル]メニューの[新規][クラス]を選択します。⁠新規Javaクラス]ダイアログが表示されたら,以下の値を入力して[終了]をクリックします。

図5 新しいクラスを作成する様子。

図5 新しいクラスを作成する様子。

パッケージcom.example.android.skeletonapp
名前SkeletonSubActivity
スーパークラスandroid.app.Activity

終了をクリックすると,ひな形のコードが生成されて,クラス名と同じ名前でプロジェクトの「src」フォルダにファイルが作成されます。

SkeletonSubActivity.javaをダブルクリックで開いて,以下のコードを追加します。

先で作成した画面リソースを使用するように,setContentViewの引数で,先で作成した画面リソースを指定しているところがポイントです。

SkeletonSubActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 画面の XML を指定する
    setContentView(R.layout.skeleton_sub_activity);
}

次に,主画面のコードも変更します。

バックボタンは,押すと終了するようになっていますが,動作を変更して,ボタンが押されたら副画面へ遷移するように,onClickのコードを変更します。

SkeletonActivity.java
OnClickListener mBackListener = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent( SkeletonActivity.this, SkeletonSubActivity.class );
        startActivity( intent );
    }
};

ここで冒頭で説明した「明示的インテント」が登場します。

主画面から副画面に遷移する為に,startActivityを呼び出して,別のアクティビティを表示しています。

AndroidManifest.xmlの準備

Android OSは,画面リソースとソースコードの他にAndroidManifest.xmlに必要な記述を行う必要があります。

AndroidManifest.xmlには,アプリのアクティビティ等が,どのような挙動を行い,どのような情報を公開し,どのようなデータを処理し,どのようにしてそれらを起動するかという情報を記述・保持します。Androidマーケット経由で,アプリをインストールすると「このアプリケーションは,以下の情報にアクセスします」と表示されますが,あれは,このAndroidManifest.xmlに記述された内容を表示しています。これには,正しい記述を行わないと画面すら表示できないので注意してください。

プロジェクト直下にあるAndroidManifest.xmlをダブルクリックで開きます。

編集画面下のタブから[Application]を選択します。⁠Application Nodes]を見ると,既に[SkeletonActivity]が登録されているはずです。これに先で作成した[SkeletonSubActivity]を追加しています。⁠Add...]をクリックして,ダイアログが表示されたら[Activity]を選択して[OK]をクリックします。

図6 一覧にSkeletonSubActivityが追加されることを確認して下さい。

図6 一覧にSkeletonSubActivityが追加されることを確認して下さい。

[SkeletonActivity]が登録されていたリストに[Activity]が表示されています。

これを選択して,⁠Attributes for Activity][Name][Browse...]を選択して[SkeletonSubActivity]を選択して[OK]をクリックします。これで,このアプリが所有するアクティビティが2つになりました。

図7 インテントフィルターが設定されると,画面のような表示になる。

図7 インテントフィルターが設定されると,画面のような表示になる。

最後に,アクティビティが受け取るインテントを設定します。

[Application Nodes][Add..]をクリックして表示されたダイアログで「Intent Filter」を選択して[OK]をクリックします。⁠SkeletonSubActivity」「Intent Filter」が登録されていることを確認してください。次に,追加した「Intent Filter」を選択して,アクションを登録します。

[Add...]をクリックして表示されたダイアログで「Action」を選択して,⁠OK]をクリックします。前の画面に戻ったら[Attributes for Action][Name]「android.intent.action.MAIN」を選択します。

図8 主画面から副画面へ遷移した後の様子。

図8 主画面から副画面へ遷移した後の様子。

著者プロフィール

傍島康雄(そばじまやすお)

5月30日生まれ。

モバイルデバイスが大好物。それで動くアプリの開発に喜びを感じている。スマートフォン前夜のWindows Mobile,PalmOSのアプリに情熱を傾けていたが,最近は停滞気味でコードを書くよりも文章を書く機会が多くなっており,文章を書くのも,プログラミングと同じくらい奥深い作業だと感じている。

ブログ:http://yasuos.com/blog/