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