Intent
0pt
インテント
Androidのクラス名。
Androidアプリ内で画面遷移をするときに使用するのがこのインテントと呼ばれるクラス。
明示的インテント
同アプリ内で明示的に起動したいActivityを指定して飛ぶ。
<span style="font-weight: bold">Intent intnt = new Intent(Context,飛び先クラス);
intnt.putExtra(飛び先で呼び出すキーとなるString,渡す内容);</span>
渡す内容はいろんな型を渡せるけどクラスのインスタンスなどの複雑なオブジェクトを渡す場合は、そのクラスにSerializableインタフェースを実装するか、Parcelableインタフェースを実装するかしないと渡せない。なお、飛び先でわたってきた内容を得るには以下(シリアライザブルオブジェクトの場合)。
getIntent().getSerializableExtra(設定したキー);
SerializableよりParcelableの方がプロセス間通信用に作成された分高速なのかなー。
Parcelable実装
ArrayListの書き出しはwriteTypedListで読みだしはcreateTypedArrayList(CREATOR)と他の型とは違いメソッド名が異なる。readTypedListではないので注意。
http://www.adakoda.com/adakoda/2009/01/android-androidosparc...
暗黙的インテント
暗黙的インテントを投げる
マニュフェストに書かれてあるフィルタによってふるい分けられて勝手にactivityが選ばれる。こことか参考にするとよさそう。
http://www.saturn.dti.ne.jp/~npaka/android/ActivityEx/index....
暗黙的インテントを受け取る
投げる側は投げるだけでいいんだけども、受け取る側はINTENTのどこに何のデータがあるのかわからないよ。ブラウザからの暗黙的インテントはどこにURLがあるんだ。というところで以下のページを発見。getIntent().getData()でURLは得られないとのこと。キーの入手の仕方も含めててきとーに入手法を書いてみた。
HashTable<String,Object> items =new HashTable<String,Object>();
Bundle data = getIntent().getExtras();
int count = getIntent.keySet().toArray().size();
for(int i = 0;i<count;i++){
String key =getIntent().keySet().toArray()[i].toString();
items.add(key, data.getString(key));
}
http://blog.k1kuch1.com/2010/01/android%E3%81%AE%E3%82%A2%E3...
Activityは必ずマニュフェストに宣言しないといけない
明示的インテントで別Activityに飛ぼうとしたらエラー!
↓
Unable to find explicit activity class {パッケージ名/クラス名}; have you declared this activity in your AndroidManifest.xml?
メインのActivityじゃなくても宣言しないと認識されない。
マニュフェスト大事!
コメントはまだありません