FC2ブログ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

いろんな記事を書きかけではありますが、気になることが次々と出てくるAndroid。

そんな誘惑に負けつつ、まぁメモだから・・というわけのわからない自己暗示で次へ次へと進んでいきます。


今回はIntentについて書きます。

Intentですが、別の画面とデータのやりとりをするためには必須なクラスです。

別画面を開く場合はIntent。
別画面にパラメータを渡す場合もIntent。
別画面からリザルトを受け取る場合もIntent。

とりあえず、別画面に遷移したり、別アプリに遷移したり、パラメータを交換する場合はIntent使ってねという感じです。

ちょっとだけ技術者っぽいことを書くと、Intentには暗黙的と明示的が存在します。


■暗黙的なIntent

Intent(String action)
Intent(String action, Uri uri)

上記のコンストラクタを使う場合は暗黙的なIntentになります。

action には Intent.ACTION_? といった定数を指定します。
この定数ですが、数がものすごくあります。

調べると良く出てくるものとして、
Intent.ACTION_VIEW
Intent.ACTION_CALL
Intent.ACTION_DIAL

なんかがあります。


uri にはパラメータとなる値を指定します。

Webブラウザを呼び出す場合はURL
地図アプリを呼び出す場合は緯度・経度
電話アプリを呼び出す場合は電話番号

といった具合ですね。

uri の書き方ですが、それぞれのケースで内容が変わります。
・・・これどこかに全部乗ってるのかなぁ。

bg_logo_s.png
※やはり、詳しいことはここですね。

Intent のインスタンスを作成したら、Activity.startActivity(intent)を呼びます。
これでIntentで指定したアクティビティが実行されます。

続けて、明示的なIntentです。


■明示的なIntent

Intent(Context context, Class class)

上記のコンストラクタを使う場合は明示的なIntentとなります。

context にはコンテキスト、class には呼び出し先のクラスを指定します。

例えば、今作成しているアプリでチャットアプリがあります。
チャットの発言色を、別アプリのパレットクラスで選んだ色を反映するという仕様にしています。

それをサンプルに紹介します。

まずはソース。
WS000023.jpg
いきなり、↑で書いたコンストラクタとは違います。

まぁ、こういうやり方もあるということで・・

まず、Intentのインスタンスを作成します。

次に、 setClassName で呼び出し先のクラスを設定します。引数はパッケージと、パッケージ+クラス名です。
※ちなみに、紹介したコンストラクタで書くと、Intent(this, tsukul.palette.palette.class);

そして、渡したいパラメータがある場合は、 putExtra でキー情報に値を紐付けます。
紐付ける値は、 String や Int などです。 Object はどうなんだろう。

最後に、 Activity.startActivityForResult を呼びます。
暗黙の時と違いますが、おそらくどちらでも良いとおもいます。
こちらの場合は、リクエストコードというものを第二引数で渡しています。
これは、呼び出し先のアクティビティから戻ってきたときに返されるコードになります。
つまり、リクエストコードを判定材料に、 Intent の戻り値を処理するかどうか処理分けすることができます。

では、呼び出し先のアクティビティがパラメータを返してきた場合どのように受け取るのか。

それは onActivityResult というメソッドを Override します。
Intent で開いたアクティビティが終了した際に動作するイベントで、この中でパラメータを受け取ります。

onActivityResult(int requestCode, int resultCode, Intent intent)

requestCode は、呼び出す際に指定したリクエストコードです。これが同じなら、処理をするように書きます。

resultCode は処理が成功したかどうかを判定するためのコードです。Activity.RESULT_OK と等しければ処理しましょう。
※余談ですが、定数の中身は -1 です。

intent は、戻り値が入ってます。getIntExtra メソッドを使用して、中身を取り出しましょう。
一応こんな動きになるということで、開発中ですがチャットアプリの文字色変更を紹介。

まずは適当に発言。現在の色はグレー?です。
android_chat_1.jpg

アプリのメニューを開いて、文字色の変更を選択。すると、パレットアプリが立ち上がります。
android_chat_22.jpg

初期値は現在の色になっているので、色を変更してOKボタンを押します。
android_chat_33.jpg

もう一度発言すると、色が変わっています。
android_chat_44.jpg


スポンサーサイト

コメント
コメントを投稿
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。