Mono Works

チラシのすきま

メモ:インテントのキホン

前回は、アクティビティ(Activity)についてメモりましたので、今回はそのActivityどうしの橋渡しをしてくれるインテント(Intent)についてメモります。といっても、自分の理解できる範囲では、次に開くActivity(画面)を指定するためのおまじないということしか分かってないので、詳しい説明もないまま、例を挙げていきます。

ある画面(MainActivity)にボタンが表示されていて、このボタンを押すと、別の画面(NextActivity)を表示させるには、こんな記述になります。

Button btnNext = (Button) this.findViewById(R.id.button1);
btnPickUp.setOnClickListener(new View.OnClickListener(){
  public void onClick(View v){
    Intent intent = new Intent(MainActivity.this, NextActivity.class);
    startActivity(intent);
  }
});

遷移元にMainActivity.thisを指定して、遷移先にNextActivity.classを指定しています。同じアプリ内で、ボタンを押したら別の画面を開く場合に用いられます。このように次のActivityを直接指定して引き継ぐことを「明示的Intent」と呼んでます。

Intent intent = new Intent(MainActivity.this, NextActivity.class);

次は、表示された画面にまたボタンが表示されていて、このボタンを押すと、ブラウザが開き「http://www.monoworks.co.jp」が表示されるという記述です。

Button btnNext = (Button) this.findViewById(R.id.button2);
btnPickUp.setOnClickListener(new View.OnClickListener(){
  public void onClick(View v) {
    Uri uri = Uri.parse("http://www.monoworks.co.jp");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
  }
});

こちらは、1行目に次のActivityに引き継ぐパラメータ(Uri)を記述して、2行目にどういうアクション(ACTION_VIEW)を起こすのかを記述して、特定のActivityを指定していません。この例では、指定したURLをブラウザで開くアクションになりますが、もしブラウザアプリが複数ある場合は、どのブラウザで開くのか選択するウインドウが表示されます。このように次のActivityを特定せずに引き継ぐことを「暗黙的Intent」と呼んでます。

Uri uri = Uri.parse("http://www.monoworks.co.jp");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

上記は、このようにも記述できます。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.monoworks.co.jp"));

本日紹介したIntentは、パラメータを渡したら、渡しっぱなしの例ですが、次回は元のActivityになにかしらのパラメータを持ち帰るIntentについてメモる予定です。

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内