Intent
インテント
Androidのクラス名。
Androidアプリ内で画面遷移をするときに使用するのがこのインテントと呼ばれるクラス。
明示的インテント
同アプリ内で明示的に起動したいActivityを指定して飛ぶ。
<span style="font-weight: bold">Intent intnt = new Intent(Context,飛び先クラス);
intnt.putExtra(飛び先で呼び出すキーとなるString,渡す内容);</span>
渡す内容はいろんな型を渡せるけどクラスのインスタンスなどの複雑なオブジェクトを渡す場合は、そのクラスにSerializableインタフェースを実装するか、Parcelableインタフェースを実装するかしないと渡せない。なお、飛び先でわたってきた内容を得るには以下(シリアライザブルオブジェクトの場合)。
<span style="font-weight: bold">getIntent().getSerializableExtra(設定したキー);</span>
SerializableよりParcelableの方がプロセス間通信用に作成された分高速なのかなー。
暗黙的インテント
暗黙的インテントを投げる
マニュフェストに書かれてあるフィルタによってふるい分けられて勝手にactivityが選ばれる。こことか参考にするとよさそう。
http://www.saturn.dti.ne.jp/~npaka/android/ActivityEx/index.html
暗黙的インテントを受け取る
投げる側は投げるだけでいいんだけども、受け取る側はINTENTのどこに何のデータがあるのかわからないよ。ブラウザからの暗黙的インテントはどこにURLがあるんだ。というところで以下のページを発見。
Intent#getData()でUriが取れるということだったので、ブラウザからSENDされてくるurlもここに入っているものだと思っていた。
が、違ってgetIntent().getExtras().getString("android.intent.extra.TEXT")とする必要があった。
getString(key)のkeyはgetIntent().getExtras().keySet()で取り出してLogで確認。
http://blog.k1kuch1.com/2010/01/android%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/
Activityは必ずマニュフェストに宣言しないといけない
明示的インテントで別Activityに飛ぼうとしたらエラー!
↓
Unable to find explicit activity class {パッケージ名/クラス名}; have you declared this activity in your AndroidManifest.xml?
メインのActivityじゃなくても宣言しないと認識されない。
マニュフェスト大事!
履歴
- 第 11 版dobby2010-03-16 18:42:41
- 第 10 版dobby2010-02-23 20:33:39
- 第 9 版dobby2010-02-23 20:33:12
- 第 8 版dobby2010-02-23 20:25:17
- 第 7 版dobby2010-02-23 20:24:57
- 第 6 版dobby2010-02-12 21:26:44
- 第 5 版dobby2010-02-12 20:03:41
- 第 4 版dobby2010-02-12 19:58:34
- 第 3 版dobby2010-02-12 19:55:53
- 第 2 版dobby2010-02-12 19:55:22
- 第 1 版dobby2010-02-12 19:54:53