My Photo

« 瀬川さんちとかわいそう | Main | ドタバタ帰省 »

August 13, 2011

Androidアプリ開発メモ012:マルチアクティビティ、Intent

マルチアクティビティ

複数のアクティビティを使用する場合はAndroidManifest.xmlにそれぞれのアクティビティのactivity要素を記述する。最低限android:name属性とandroid:label属性を記述する。

新しいアクティビティを立ち上げるにはContext#startActivity()を使用する。
アクティビティの終了はActivity#finish()を使用する。

Intent

アクティビティのための情報を詰め込んだクラス。
アクティビティを開始する場合やアクティビティ間でデータをやり取りするときに使う。

Intent intent = new Intent(this, Activity1.class);
startActivity(intent);

アクティビティ間のデータのやりとり

親アクティビティから子アクティビティにデータを渡すには、親アクティビティではIntentにデータをセットして渡す。

Intent intent = new Intent(this, SubActivity.class);
intent.putExtra(PARAM_NAME, aEditText.getText().toString());
startActivity(intent);

子アクティビティでデータを受け取るにはActivity#getIntent()でIntentを取得し、geIntExtra()やgetStringExtra()などでIntentから取得する。

Intent intent = getIntent();
String s = intent.getStringExtra(PARAM_NAME);

子アクティビティから親アクティビティにデータを渡すには、親はActivityクラスのstartActivityForResult()で子を開始し、onActivityResult()をオーバーライドしてIntentから値を取り出す。

public void startActivityForResult(Intent intent, int requestCode)
requestCode:0以上。開始したアクティビティが終了したとき、onActivityResult()のrequestCodeの値になる。

protected void onActivityResult(int requestCode, int resultCode, Intent data)
requestCode:startActivityForResult()のrequestCode。この結果がどこから来たものか識別に使える。
resultCode:子アクティビティのsetResult()でセットした値

void test() {
	Intent intent = new Intent(this, SubActivity,class);
	startActivityForResult(intent, RETURN_CODE);
}

protected void onActivityResult(int returnCode, int resultCode, Intent intent) {
	String s = intent.getExtras().getString(RETURN_NAME);
	textView.setText(s);
}

子アクティビティはIntentに渡す値をセットし、setResult()を実行してからアクティビティを終了する。

Intent intent = getIntent();
String s = editText.getText().toString();
intent.putExtra(RETURN_NAME, s);
setResult(RESULT_OK, i);
finish();

アクションIntent

IntentにIntent.ACTION_XXXと関連するデータをセットしてアクティビティを起動すると、適切なアクティビティが選択されて起動する。

指定したURLを開く
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(<URL>));

Google検索
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, <検索キーワード>);

ダイアルする(Dial Activityに電話番号が入力されるところまでで、電話はかけない)
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + <電話番号>));

電話をかける
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + <電話番号>));

Google Maps
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<緯度>,<経度>?q=旗を立てる場所(地名or<緯度>,<経度>)&z=<ズーム指定>));

« 瀬川さんちとかわいそう | Main | ドタバタ帰省 »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/52460498

Listed below are links to weblogs that reference Androidアプリ開発メモ012:マルチアクティビティ、Intent:

« 瀬川さんちとかわいそう | Main | ドタバタ帰省 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof