314話はAndroidプログラミングに戻る。「第310話 Intentを使ってダイアログを開く 」と「第311話 複数の画面間でデータをやり取りする 」ではIntentクラスを使って,別の画面を表示した。これらは明示的なインテントの使い方の例であるが,特に難しいことではない。例えば,以下のようにAbout画面を表示するときはAboutクラスをインテントに指定した。

--------------------------------------------------------------

Intent i = new Intent(calcActivity.this,About.class);
startActivity(i);

--------------------------------------------------------------

 計算結果を別画面(resultActivity)に表示したいときは,resultActivityクラスをインテントに指定した。

--------------------------------------------------------------

Intent i = new Intent(calcActivity.this,resultActivity.class);
i.putExtra("res", iresult);
startActivityForResult(i,SHOW_RESULT);

--------------------------------------------------------------

 このようにIntentクラスのオブジェクトを生成するときに,自分自身と宛先のオブジェクトを指定するのが明示的なインテントの使い方である。

 これに対し,暗黙的なインテントとは宛先のオブジェクトを明示的に指定していないインテントのことである。

 さて,暗黙的なインテントが使えると何がうれしいのか。

 これまでアクティビティを実行するときに,Intentクラスのオブジェクトを指定するということに違和感がなかったか?もっと正確に言うと,Intentという単語に違和感がなかったか,である。

 Intentは意図という意味だ。意図を渡してアクティビティを開始するのに,呼び出すべきオブジェクトまで意図に含まれているのには,蛇足ではないかということだ。意図はくんでもらう性質のものだ。「はじめてのおつかい」なら,花屋に行ってお花を買ってきて,と頼むのだろうが,普通は花を買ってきて,だけで済ませたい。

 意図(Intent)を理解して,システムが誰に処理を頼むかを決めてくれるのが暗黙的なインテントである。Intentという単語の意味からして,宛先のオブジェクトを指定しない,暗黙的なインテントのほうが,本来想定された使い方ではないかと思う。