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

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

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

動作テスト

これで準備が完了です。では,エミュレータを使って動きを確認してみます。

Eclipseの[実行]メニューの[前回の起動を実行]でアプリを実行します。アプリが起動したら,⁠Back]ボタンをタップします。すると,新たに作成した副画面に遷移するはずです。副画面に遷移したら,エミュレータのバックキーを押してください。起動時の主画面に戻るはずです。

図9 起動時の主画面

図9 起動時の主画面

もう少し改造をしてみます

主画面から副画面へ移動は確認できたでしょうか?

もう少し手を加えて,主画面から副画面へ遷移するときに,データの引き渡しを行ってみます。インテントには,追加データを持たせることができるので,その仕組みを使って,主画面から副画面へ移動する際に,テキストを引き渡して,副画面のテキスト入力エリアへ表示を行います。

まずは,SkeletonActivity.javaのバックボタンが押された際のコードに,追加のデータを引き渡すコードを追加します。

SkeletonActivity.java

OnClickListener mBackListener = new OnClickListener() {
    public void onClick(View v) {
        //finish();
            
        Intent intent = new Intent( SkeletonActivity.this, SkeletonSubActivity.class );
        intent.putExtra( "INTENT_PARAM", "TEST" );
        startActivity( intent );
    }
};

intent.putExtraの部分が追加されたコードです。

第1引数がキーで,インテントが保持している追加データにアクセスするために使います。第2引数は,追加データになり,今回のケースはテキストです。

次にデータの受け側,SkeletonSubActivity.javaのonCreateにコードを追加します。

SkeletonSubActivity.java

@Override
public void onCreate(Bundle savedInstanceState) {
    String str;

super.onCreate(savedInstanceState);

    // 画面の XML を指定する
    setContentView(R.layout.skeleton_sub_activity);
        
    if(( savedInstanceState == null ) || ( savedInstanceState.isEmpty()) )
        {
            // インテントから追加データを取り出す
            str = getIntent().getExtras().getString( "INTENT_PARAM" );
        }
    else
        str = "";

    // 編集エリアに追加データを表示する。
    EditText edit = (EditText)findViewById( R.id.EditText01 );
        edit.setText( str );
}

主画面から渡された追加データのテキストは,以下のコードで取り出しています。

第1引数に,主画面で指定したキーが使われていることに注目してください。

str = getIntent().getExtras().getString( "INTENT_PARAM" );

取り出されたテキストデータは,以下のコードで画面に表示しています。

EditText edit = (EditText)findViewById( R.id.EditText01 );
edit.setText( str );

これで準備が完了です。

エミュレータを使って動きを確認してみます。Eclipseの[実行]メニューの[前回の起動を実行]でアプリを実行します。主画面から副画面に移動して,編集エリアに主画面から引き渡した追加データのテキストが表示されていることを確認してください。

図10 画面が遷移する際に,追加データを渡したので,編集エリアに「TEST」と表示されている。

図10 画面が遷移する際に,追加データを渡したので,編集エリアに「TEST」と表示されている。

今回は,そして次回は…

今回は,

  • 新しい画面を作成して表示。
  • 暗黙的インテントの基本的。
  • インテントに追加データを持たせる方法。

を解説しました。

新しい画面の作成は,慣れないと少々煩雑ですが,画面リソースやAndroidManifestは,XMLで表現されているので,2回目からは使い回しができ,簡単に作ることができるはずです。また,インテントに追加データの持たせ方は,基本的な方法で複数のデータやオブジェクトを引き渡す方法があるので,サンプルを修正するなどして,さまざまな方法を試してください。

次回は,画面周りのコントロールの使い方を紹介します。

著者プロフィール

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

5月30日生まれ。

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

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