Intent

Posted by muchag | Android |
初回投稿:2011-04-01 (金) 19:44:44 | 最終更新:2011-07-07 (木) 17:38:07

Intent とは
コンポーネント間のやり取りの仲立ちをするオブジェクト。

同一アプリケーション内である必要はなく
別アプリケーションのコンポーネントとも連絡を取れる。

Android Developers:Intent

コンストラクタ

Intent のコンストラクタは大きく分けて2種類。
リファレンスには6種類載っている。
 

明示的な Intent

呼出先がハッキリわかっている場合。

Intent(Context packageContext, Class cls)

第1引数:呼出元 Context
第2引数:呼出先クラス。パッケージ名からフルパスで記述
 
[android]//アクティビティ activity1 クラス直下の場合
Intent intent = new Intent(this, com.example.sample.activity2.class);

//アクティビティ activity1 クラス内の別クラスの場合?
//私がよくやるのは、イベント処理の各リスナー内で用いる
Intent intent = new Intent(activity1.this, com.example.sample.activity2.class);[/android]  

暗黙の Intent

目的がハッキリしていて、その目的を題目に呼び出す場合。
呼出先はシステムに依存?

Intent(String action, Uri uri)

第1引数:目的(アクション)
第2引数:データ
 
[android]//指定番号先へ電話をかける場合
Intent intent = new Intent( Intent.ACTION_CALL, Uri.parse(“tel:0123456789”) );

または

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData( Uri.parse(“tel:0123456789”) );[/android] 目的:電話をかける
data:0123456789
何を利用して電話をかけるかはお任せ。
 

実行・呼出
戻り値なし

void | startActivity (Intent intent)

Android Developers:startActivity

 
[android]import android.app.Activity;
import android.content.Intent;

public class Top extends Activity implements View.OnClickListener {

private final static int REQUEST_TEXT = 0; //テキストID

public void onClick(View v) {
//明示的なインテントの生成
Intent intent = new Intent(this, com.example.hoge.MyActivity.class);

//アクティビティの呼び出し。戻り値なし
startActivity(intent);
}
}[/android]  

戻り値あり

void | startActivityForResult (Intent intent, int requestCode)

Android Developers:startActivityForResult

 
[android]import android.app.Activity;
import android.content.Intent;

public class Top extends Activity implements View.OnClickListener {

private final static int REQUEST_TEXT = 0; //テキストID

public void onClick(View v) {
//明示的なインテントの生成
Intent intent = new Intent(this, com.example.hoge.MyActivity.class);

//アクティビティの呼び出し。戻り値あり
startActivityForResult(intent, REQUEST_TEXT);
}
}[/android]  

データの受け渡し
呼出元

putExtra メソッドを利用。
[android]//明示的なインテントの生成
Intent intent = new Intent(this, com.example.hoge.MyActivity.class);
intent.putExtra(“id”, 0); // データの受け渡し
intent.putExtra(“name”, “yamada”); // データの受け渡し[/android] 第1引数:キー
第2引数:
連想配列をイメージすればいいかも。
 

呼出先

getIntent メソッドを利用。
[android]int id = getIntent().getIntExtra(“id”, 0);
String name = getIntent().getStringExtra(“name”);[/android] 第1引数:キー
第2引数:初期値
getIntExtra は、初期値がないとエラーになるが
getStringExtra は、初期値がなくてもエラーにならない。初期値がなければ null 。
これらは、データ型によって多種類ある。
リファレンスを見る限りでは配列を渡すこともできるっぽい。
Android Developers:Intent
 

Action, Category, Extra, Flag

hyoromoの日記
IntentのActivity Actionの一覧表を作ってみたよ
IntentのBroadcast Actionの一覧表を作ってみたよ
IntentのCategoryとExtraとFlagの一覧表を作ってみたよ

Posted by muchag | Android |
初回投稿:2011-04-01 (金) 19:44:44 | 最終更新:2011-07-07 (木) 17:38:07

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment