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引数:呼出先クラス。パッケージ名からフルパスで記述
 

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

 

暗黙の Intent

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

Intent(String action, Uri uri)

第1引数:目的(アクション)
第2引数:データ
 

  1. //指定番号先へ電話をかける場合
  2. Intent intent = new Intent( Intent.ACTION_CALL, Uri.parse("tel:0123456789") );
  3.  
  4. または
  5.  
  6. Intent intent = new Intent(Intent.ACTION_CALL);
  7. intent.setData( Uri.parse("tel:0123456789") );

目的:電話をかける
data:0123456789
何を利用して電話をかけるかはお任せ。
 

実行・呼出
戻り値なし

void | startActivity (Intent intent)

Android Developers:startActivity

 

  1. import android.app.Activity;
  2. import android.content.Intent;
  3.  
  4. public class Top extends Activity implements View.OnClickListener {
  5.  
  6.     private final static int REQUEST_TEXT = 0; //テキストID
  7.  
  8.     public void onClick(View v) {
  9.         //明示的なインテントの生成
  10.         Intent intent = new Intent(this, com.example.hoge.MyActivity.class);
  11.  
  12.         //アクティビティの呼び出し。戻り値なし
  13.         startActivity(intent);
  14.     }
  15. }

 

戻り値あり

void | startActivityForResult (Intent intent, int requestCode)

Android Developers:startActivityForResult

 

  1. import android.app.Activity;
  2. import android.content.Intent;
  3.  
  4. public class Top extends Activity implements View.OnClickListener {
  5.  
  6.     private final static int REQUEST_TEXT = 0; //テキストID
  7.  
  8.     public void onClick(View v) {
  9.         //明示的なインテントの生成
  10.         Intent intent = new Intent(this, com.example.hoge.MyActivity.class);
  11.  
  12.         //アクティビティの呼び出し。戻り値あり
  13.         startActivityForResult(intent, REQUEST_TEXT);
  14.     }
  15. }

 

データの受け渡し
呼出元

putExtra メソッドを利用。

  1. //明示的なインテントの生成
  2. Intent intent = new Intent(this, com.example.hoge.MyActivity.class);
  3. intent.putExtra("id", 0); // データの受け渡し
  4. intent.putExtra("name", "yamada"); // データの受け渡し

第1引数:キー
第2引数:
連想配列をイメージすればいいかも。
 

呼出先

getIntent メソッドを利用。

  1. int id = getIntent().getIntExtra("id", 0);
  2. String name = getIntent().getStringExtra("name");

第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