Androidアプリの多くは複数の画面を持っており、それらを相互に行き来することができます。例えばメモ帳アプリであればメモの一覧から編集したいメモをタップすると編集画面に行き、保存ボタンを押すと再び一覧に戻る、といった感じです。アプリ開発において、画面遷移は必須となっています。
今回はAndroidアプリで画面遷移する方法について解説します。
インテントは?
Androidアプリで画面遷移するために使う仕組みを「インテント」と言います。インテントとは、アクティビティが他のアクティビティやアプリとやり取りをするための仕組みです。インテントを使うことで、あるアクティビティから任意のアクティビティを呼び出す事が出来ます。
つまり、インテントを使って遷移元のアクティビティから遷移先のアクティビティを呼び出すことで、画面遷移を実現します。
画面遷移の実装
レイアウトの作成
今回は例としてボタンをタップしたら別の画面に遷移するアプリを作ります。まずはプロジェクトを新規で作成し、activity_main.xmlにボタンを作成します。activity_main.xmlのTextViewの下に以下のコードを追加してください。
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:id="@+id/button"> </Button>
これでactivity_main.xmlにボタンが出現します。次は遷移先の画面を作ります。プロジェクトビューのどこでもいいので右クリック->New->Activity->EmptyActivityと選択します。
新しいアクティビティを作る画面になります。ここでは
「SampleActivity(activity_sample.xml)」という名前にしました。名前を入力したらFinishを押します。これで遷移先のアクティビティが作れます。
作成した遷移先のアクティビティは空っぽなので、分かりやすいように文字を表示するようにしましょう。activity_sample.xmlに以下のコードを追加してください。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="サンプルの遷移先です" android:id="@+id/textView" />
これでレイアウトの作成は完了です。
画面遷移の実装
レイアウトが終わったら画面遷移を実装します。まず今回の例ではボタンを押したら画面遷移をするということなので、「ボタンを押したら~」というイベントを実装します。イベントを実装するにはアクティビティにイベントリスナーを実装し、ボタンにリスナーを登録します。
MainActivity.javaを以下の通りに書き換えてください。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ //クリックリスナーを実装 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(this); //リスナーをボタンに登録 } //ボタンが押された時の処理 public void onClick(View view){ //ここに遷移するための処理を追加する } }
これでイベントの実装ができました。あとはonClickの中に画面を遷移するための処理を書けば、ボタンが押された時に画面が遷移します。
画面遷移をするためにはまずインテントを作ります。インテントはIntentクラスを実装することで作成できます。onClick()の中に以下のコードを追加してください。
Intent intent = new Intent(this, SampleActivity.class);
Intentクラスを実装してintentインスタンスを作成しています。その際、Intentクラスのコンストラクタは2つの引数を必要とします。1つ目は遷移元のアクティビティのクラス、2つ目は遷移先のアクティビティのクラスとなっています。今回の場合は遷移元がこのクラス自身なのでthis、遷移先がSampleAcitvity.classとなります。
インテントを作成したら、そのインテントを用いて画面を遷移します。画面を遷移するにはstartActivity()を使います。さきほどのコードの下に以下のコードを追加してください。
startActivity(intent);
startActivity()に作成したインテントを渡すことで、別画面のアクティビティが起動し、画面遷移が行われます。
ここまでのソースコードをまとめると以下のようになります。
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(this); } //ボタンが押された時の処理 public void onClick(View view){ Intent intent = new Intent(this, SampleActivity.class); //インテントの作成 startActivity(intent); //画面遷移 } }
ここまで出来たら、アプリを起動してみましょう。ボタンをタッチし、以下のような画面になったら成功です。
【おすすめ記事】
➡Android(アンドロイド)アプリ開発を学べるスクール15選
➡Android(アンドロイド)アプリの本・参考書の評判
➡【Android入門】アプリ開発環境「Android Studio」のインストール方法
➡【Android入門】Android Studiodedeアプリの画面を作成しよう!
➡【Android入門】ボタンの実装の仕方