AndroidアプリケーションにおけるIntentsを使用した画面遷移の完全ガイド
Androidアプリケーションを開発する際、異なる画面(アクティビティ)間での遷移は非常に重要な要素となります。これを実現するために使用されるのが「Intents(インテント)」です。この記事では、AndroidにおけるIntentsを利用した画面遷移の基本から応用までを解説します。
1. Intentsの基本
AndroidにおけるIntent
は、アクティビティ、サービス、ブロードキャストレシーバーなどのコンポーネント間で情報を伝達するためのメッセージオブジェクトです。画面遷移の際、Intent
を使って目的のアクティビティを起動します。

-
明示的インテント(Explicit Intent): 目的のアクティビティを明示的に指定するインテント。通常、同一アプリ内で使用されます。
-
暗黙的インテント(Implicit Intent): アクティビティの名前を指定せず、システムや他のアプリが処理できるアクションを指定するインテント。異なるアプリ間での情報交換などに使われます。
2. 明示的インテントを使った画面遷移
明示的インテントは、遷移先のアクティビティを直接指定する方法です。以下は、1つのアクティビティから別のアクティビティに遷移する基本的なコード例です。
java// 現在のアクティビティから遷移先のアクティビティを指定
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
// 遷移を実行
startActivity(intent);
このコードでは、CurrentActivity
というアクティビティからNextActivity
というアクティビティへ遷移します。
3. データを伴うインテントの使用
遷移する際に、データを渡すこともできます。Intent
には、putExtra()
メソッドを使用してデータを追加することが可能です。例えば、次のようにデータを渡すことができます。
java// 遷移先に渡すデータを準備
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.putExtra("KEY_NAME", "データ内容");
// 遷移を実行
startActivity(intent);
遷移先アクティビティでは、次のようにデータを受け取ることができます。
java// 渡されたデータを取得
String data = getIntent().getStringExtra("KEY_NAME");
4. 戻るボタンでの画面遷移
startActivity()
で遷移した画面に戻る方法は、onBackPressed()
を利用します。Androidはデフォルトで戻るボタンにこの動作を紐付けていますが、カスタマイズしたい場合は、次のように明示的に呼び出します。
java// 戻るボタンが押されたときの動作をカスタマイズ
@Override
public void onBackPressed() {
super.onBackPressed(); // デフォルトの動作(前の画面に戻る)
}
5. フラグを使った遷移の制御
アクティビティのスタック管理を制御するために、インテントにフラグを設定することができます。例えば、アクティビティを新しいタスクとして開始したり、スタックから特定のアクティビティを削除する場合です。
-
FLAG_ACTIVITY_NEW_TASK
: 新しいタスクとしてアクティビティを開始します。 -
FLAG_ACTIVITY_CLEAR_TOP
: スタック内にあるすでに開かれているアクティビティを削除し、指定されたアクティビティを再起動します。
以下に例を示します。
java// 新しいタスクでアクティビティを開始
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
6. startActivityForResult()
を使った結果の受け取り
アクティビティ遷移時に結果を受け取りたい場合、startActivityForResult()
を使用します。このメソッドを使うと、遷移先のアクティビティから戻ってきた結果を受け取ることができます。
java// 遷移先のアクティビティを開始
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivityForResult(intent, REQUEST_CODE);
onActivityResult()
メソッドをオーバーライドして、戻り値を受け取ります。
java@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String result = data.getStringExtra("result_key");
// 結果を処理する
}
}
7. システムインテントを利用した画面遷移
暗黙的インテントを使って、システムのアクティビティ(例えば、カメラやウェブブラウザ)を起動することができます。これにより、異なるアプリ間で情報をやり取りしたり、システムの機能を利用することができます。
例えば、ウェブブラウザを起動するには次のように記述します。
javaIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(intent);
このコードは、指定されたURLをウェブブラウザで開きます。
8. まとめ
Intentsを使用した画面遷移は、Androidアプリケーションにおける基本的で重要な技術です。明示的インテントや暗黙的インテントを使い分けることで、アプリ内や他のアプリとの連携を効率的に行うことができます。また、データの受け渡しや結果の受け取り、スタック管理など、アクティビティの動作を細かく制御することが可能です。
Intentsを上手に使うことで、ユーザーが快適に利用できるアプリケーションを構築することができるでしょう。