アクティビティに値を渡す - Android

Androidのアクティビティに値を渡す方法を紹介します。

プロジェクトの作成

Android アプリケーションプロジェクトを作成します。
[New Android Application]ダイアログボックスが表示されますので、以下を設定します。
  • Application Name: "SimpleActivity"
  • Project Name: "SimpleActivity"
  • Package Name: "com.iPentec.simpleactivity"
  • Minimum Required SDK: "API 8: Android 2.2 (Froyo)"
  • Target SDK: "API 17: Android 4.2 (Jelly Bean)"
  • Compile With: "API 17: Android 4.2 (Jelly Bean)"
  • Theme: "Holo Light with Dark Action Bar"

Activityの追加

こちらの記事を参照してアクティビティを追加します。アクティビティの名前は"SubActivity"としました。

UIの編集

MainActivityにはボタンを1つ配置します。


配置したボタンの"On Click"プロパティに"button1_click"を設定します。


SubActivityにはTextViewを1つ配置します。

コード

以下のコードを記述します。

MainActivity.java

package com.iPentec.simpleactivity;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.content.*;

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }
  
  public void button1_click(View view){
    Intent intent = new Intent(this, SubActivity.class);
    intent.putExtra("TestData", "MainActivityから送信した文字列です。");
    startActivity(intent);
  }
}
解説
  public void button1_click(View view){
    Intent intent = new Intent(this, SubActivity.class);
    intent.putExtra("TestData", "MainActivityから送信した文字列です。");
    startActivity(intent);
  }
が追記するコードです。

  Intent intent = new Intent(this, SubActivity.class);
  startActivity(intent);
上記はインテントを作成しアクティビティを実行します。詳細はこちらの記事を参照してください。

  intent.putExtra("TestData", "MainActivityから送信した文字列です。");
上記が呼び出し先のアクティビティへ値を送信するコードです。アクティビティに値を渡す場合はIntentのputExtra()メソッドを呼び出します。putExtraメソッドの第一引数が値のキー、第二引数が受け渡しする値になります。値のキーは受け側での取得の際に必要となります。

SubActivity.java

package com.iPentec.simpleactivity;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.*;

public class SubActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sub);
    
    Intent i = getIntent();
    String text = i.getStringExtra("TestData");
      
    TextView textView1 = (TextView)findViewById(R.id.textView1);
    textView1.setText(text);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.sub, menu);
    return true;
  }
}
解説
OnCreate内の下記が追加のコードです。
  Intent i = getIntent();
  String text = i.getStringExtra("TestData");
      
  TextView textView1 = (TextView)findViewById(R.id.textView1);
  textView1.setText(text);

  Intent i = getIntent();
  String text = i.getStringExtra("TestData");
上記のコードによりアクティビティへ送られた情報を取得します。getIntent()メソッドを呼び出し、このアクティビティのインテントを取得します。インテントオブジェクトが取得できた後getStringExtra()メソッドを呼び出し値を取得します。getStringExtra()メソッドの第一引数は取得する値のキーになります。これは、putExtraメソッドの第一引数と同じキーを指定します。(今回の例では"TestData")

  TextView textView1 = (TextView)findViewById(R.id.textView1);
  textView1.setText(text);
上記のコードは、getStringExtra()メソッドで取得した値をTextViewに表示させるコードです。詳細はこちらの記事を参照してください。

実行結果

プロジェクトを実行します。下図左の画面が表示されます。ボタンをタップすると画面が切り替わりMainActivityのコードで設定した値がSubActivity側で表示されます。


著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2013-03-27
iPentec all rights reserverd.