前回は、アクティビティ(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のアカウントが必要です)