Intent
Intent とは
コンポーネント間のやり取りの仲立ちをするオブジェクト。
同一アプリケーション内である必要はなく
別アプリケーションのコンポーネントとも連絡を取れる。
Android Developers:Intent
Intent のコンストラクタは大きく分けて2種類。
リファレンスには6種類載っている。
呼出先がハッキリわかっている場合。
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(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
hyoromoの日記
IntentのActivity Actionの一覧表を作ってみたよ
IntentのBroadcast Actionの一覧表を作ってみたよ
IntentのCategoryとExtraとFlagの一覧表を作ってみたよ