Android Studioでアクティビティを切り替えて画面を遷移する方法
アクティビティを切り替えて画面を遷移したい
Androidアプリを作りたい場合、1つの画面で終わることはまれで、ほとんどが複数の画面を持つことになると思います。ですので、Androidアプリを作るにあたって、画面を遷移させる方法は基本中の基本とも言えます。今回はその方法について説明したいと思います。
完成イメージ
ActivityFirst が最初に表示され、「ActivitySecondへ」ボタンをクリックすることで ActivitySecond に画面が切り替わります。ActivitySecond の「ActivityFirstへ」ボタンをクリックすることで ActivityFirst に画面が切り替わります。
不要なファイルを削除する
java フォルダの MyActivity と layout フォルダの activity_my.xml と menu フォルダの my.xml は今回必要がないので削除します。
必要なアクティビティを追加する
新たに ActivityFirst と ActivitySecond を追加します。画面を追加する方法についてはAndroid Studioで Activity をプロジェクトに追加する - Android Studioでアプリ開発!を参照してください。
また、不要なファイルを削除し、新たに画面を追加したので AndroidManifest.xml の変更が必要になります。以下のように変更します。画面タイトルの変更方法についてはAndroid Studioで画面のタイトルをデザイン時に変更する - Android Studioでアプリ開発!を参照してください。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.transitiontest" > <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".ActivityFirst" android:label="@string/title_ActivityFirst" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ActivitySecond" android:label="@string/title_ActivitySecond" > </activity> </application> </manifest>
アクティビティのレイアウトを設定する
activity_first.xml と activity_second.xml のレイアウトを決めます。それぞれに遷移するためのボタンを配置し、クリック時に onClick() メソッドを呼ぶように設定しています。クリックイベントの取得方法についてはボタンクリックイベントを取得する - Android Studioでアプリ開発!を参照してください。
activity_first.xml は以下のように記述しました。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ActivityFirst"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lbl_btnToSecond" android:id="@+id/btnToSecond" android:onClick="onClick" /> </RelativeLayout>
activity_second.xml は以下のように記述しました。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ActivitySecond"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lbl_btnToFirst" android:id="@+id/btnToFirst" android:onClick="onClick" /> </RelativeLayout>
プログラムを記述する
ActivityFirst と ActivitySecond のプログラムを記述していきます。基本的には必要なクラスを import し、onClick() メソッドを記述するだけです。
onClick() メソッドでは、遷移先クラスの Intent を作成し、アクティビティの開始を実行しています。
ActivityFirst は以下のようになります。
package com.example.transitiontest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.content.Intent; public class ActivityFirst extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_first, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onClick(View view){ switch (view.getId()){ case R.id.btnToSecond: Intent intent = new Intent(this, ActivitySecond.class); startActivity(intent); break; } } }
ActivitySecond は以下のようになります。
package com.example.transitiontest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.content.Intent; public class ActivitySecond extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_second, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onClick(View view){ switch (view.getId()){ case R.id.btnToFirst: Intent intent = new Intent(this, ActivityFirst.class); startActivity(intent); break; } } }
以上の実装で完成イメージのように動作します。
まとめ
Android Studioでアクティビティを切り替えて画面を遷移する方法を説明しました。肝となるのは Intent で、遷移先のクラスを指定してアクティビティを開始することで画面遷移することができました。
画面遷移は Androidアプリの基本なので、ぜひともマスターしておきたい方法です。
Android StudioではじめるAndroidプログラミング入門
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/04
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 柴田文彦,川口仁
- 出版社/メーカー: インプレス
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る