あるActivityから別のActivityへ画面遷移させるには、インテントという仕組みを使います。
インテントは単にActivityを起動させるだけでなく、必要な情報を引き渡す事も可能です。
AndroidManifest.xmlにActivityを登録
起動させる Activity は AndroidManifest.xml に登録されている必要があります。
Android Studio を使って新しい Activity を作ると自動で AndroidManifest へ追記してくれるので意識する機会は少ないかもしれませんが、無いと起動できないので注意しましょう。
XMLの<application>要素の中に<activity>要素を追加します。
<activity>要素には android:name 属性でActivityクラスの名前を指定します。
AndroidManifest.xmlの例
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx.test"> <uses-permission android:name="android.permission.INTERNET"/> <application> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SubActivity"/> </application> </manifest>
別Activityを起動する
別Activityを起動するには Intent クラスを使います。
Intent のコンストラクタへ起動したい Activity のクラス情報を渡してインスタンスを作成します。
値を引き渡したい場合は、Intent クラスのputExtraメソッドを使います。
適当なキーと関連付けて値をセットしていきます。
Intent の準備が出来たら startActivityメソッドを呼び出せば新たな Activity が起動します。
例
Intent intent = new Intent(this, SubActivity.class); intent.putExtra("TestNum", 1); intent.putExtra("TestTxt", "テスト"); startActivity(intent);
起動された側で値を受け取る
Intent の putExtraメソッドで渡された値は、起動された側で受け取る事が出来ます。
Activity の getIntentメソッドで起動時に使われた Intent を取得し、getExtraメソッドを使って値を受け取ります。
例
Intent intent = getIntent(); int testNum = intent.getIntExtra("TestNum", 0); String testTxt = intent.getStringExtra("TestTxt");
コメントをお書きください