Dictionary<string,dobby>
mindiaDictionary<string,dobby>単語

Intent

dobby · 2010-03-16 更新 · 履歴(11)
第 11 版(2010-03-16 18:42:41 · dobby)を表示しています。 最新版に戻る

インテント

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の方がプロセス間通信用に作成された分高速なのかなー。

Parcelable実装

ArrayListの書き出しはwriteTypedListで読みだしはcreateTypedArrayList(CREATOR)と他の型とは違いメソッド名が異なる。readTypedListではないので注意。
http://www.adakoda.com/adakoda/2009/01/android-androidosparcelable-parcel.html

暗黙的インテント

暗黙的インテントを投げる

マニュフェストに書かれてあるフィルタによってふるい分けられて勝手にactivityが選ばれる。こことか参考にするとよさそう。
http://www.saturn.dti.ne.jp/~npaka/android/ActivityEx/index.html

暗黙的インテントを受け取る

投げる側は投げるだけでいいんだけども、受け取る側は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%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じゃなくても宣言しないと認識されない。
マニュフェスト大事!

履歴

タグ