読者です 読者をやめる 読者になる 読者になる

Androidプログラミングブログ

Androidプログラミングを勉強していく中でわかったことをメモする

【Androidプログラミング入門 #015】明示的インテントを使って画面遷移する

はじめに

ボタンを押したら画面遷移するサンプルを作ります。

画面遷移する際に使われるのがインテントです。
インテントには「明示的」インテント「暗黙的」インテントがあります。

違いは遷移先を指定するか、指定しないかです。

1. プロジェクトの作成

f:id:fjswkun:20151030003333p:plain

f:id:fjswkun:20151030003343p:plain

f:id:fjswkun:20151030003352p:plain

f:id:fjswkun:20151030003404p:plain

2. 遷移先画面の作成

f:id:fjswkun:20151030003427p:plain

f:id:fjswkun:20151030003441p:plain

3. トップ画面のレイアウト作成

ボタンを押したら画面遷移するようにしたいので、
画面にボタンを追加します。

content_main.xmlを開き、編集します。
プロジェクト作成時に自動追加されるTextViewを削除し、
ボタンを追加します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="次の画面へ"
        />
</RelativeLayout>

4. ボタン押下時の処理

ボタンを押したら画面遷移する処理を書きます。

MainActivity.javaを開き、編集します。 onCreateメソッドを下記のようにします。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    // ボタンを取得&画面遷移する処理
    Button button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
}

5. 遷移先の画面レイアウトの作成

遷移先の画面は真っ白で、遷移したことがわかりにくいので
レイアウトを変更します。

遷移先画面のレイアウトXMLファイル(content_second.xm)を開き、
編集します。

ここではTextViewを追加しました。

l

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_second"
    tools:context="com.swift_studying.samoleexplicitintent.SecondActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="遷移先画面"
        />
</RelativeLayout>

6. 実行

実行します。

f:id:fjswkun:20151030005020p:plain

f:id:fjswkun:20151030005028p:plain

うまく実行されなかった場合、こちらからサンプルプロジェクトを
ダウンロードし、確認してください。
SamoleExplicitIntent.zip - Google ドライブ

参考情報

参考

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

開発用デバイス

Androidの勉強をはじめた人は知っているようにエミュレーターはちょー遅い。
開発用に安いAndroidを買えば、勉強がはかどります!
iPhoneと比較すると安いので買ったほうがいいと思います。

おすすめデバイス

勉強用に使うだけなので価格が高い最新デバイスは必要ないと思います。
最新のデバイスは一人前のAndroidプログラマーになったら購入を検討しましょう。

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

その他に探すなら↓から。
Android nexus5を勉強用に購入