Androidプログラミングブログ

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

【Androidプログラミング入門 #017】Intentで画面遷移するときにデータを遷移先に渡す

はじめに

Intentで画面遷移するときにデータを遷移先に渡す。 Intentオブジェクトに受け渡すデータを追加してあげればいい。

ここではトップ画面でボタンを押すと、
特定のURLを遷移先に渡し、WebViewで開くようにします。

1. プロジェクト作成

f:id:fjswkun:20151101204437p:plain

f:id:fjswkun:20151101204447p:plain

f:id:fjswkun:20151101204500p:plain

f:id:fjswkun:20151101204511p:plain

2. 画面レイアウト作成

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

<?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:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/main_activity_button"
        android:text="画面遷移する"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

3. 画面遷移処理の作成

MainActivity.javaを開きます。
onCreateメソッドの一番下に下記の処理を追記します。

ボタンを押した時に画面遷移させる処理です。
その中で遷移先に受け渡すデータをセットしています。

// ボタンに処理を追加
Button button = (Button)findViewById(R.id.main_activity_button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 遷移先に渡すURL
        String url = "http://android.swift-studying.com";

        // Intent作成
        Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
        intent.putExtra("url", url);

        // 画面遷移
        startActivity(intent);
    }
});

3. 遷移先画面追加

f:id:fjswkun:20151101204703p:plain

f:id:fjswkun:20151101204714p:plain

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

activity_web_view.xmlを開きます。

<?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_web_view"
    tools:context="com.swift_studying.samplemoveactivitywithdata.WebViewActivity">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webview_activity_webview"
        ></WebView>
</RelativeLayout>

5. 受け渡されたデータの受け取り

WebViewActivity.javaを開きます。
onCreateメソッドの一番下に下記追記します。

WebViewの設定と遷移するときにわたされたデータの受け取りをしています。

// webViewの設定
WebView webView = (WebView)findViewById(R.id.webview_activity_webview);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);

// 受け渡されたデータを使う
String url = getIntent().getStringExtra("url");

// Webを表示
webView.loadUrl(url);

6. インターネットアクセス許可

AndroidManifests.xmlを開きます。
applicationタグの上にインターネットアクセス許可のための1行を追記します。

<uses-permission android:name="android.permission.INTERNET" />

7. 実行

実行します。

f:id:fjswkun:20151101210923p:plain

f:id:fjswkun:20151101210931p:plain

うまくいかなかった方はこちらからダウンロードして確認してみてください。
SampleMoveActivityWithData.zip - Google ドライブ

参考情報

参考

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

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

開発用デバイス

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

おすすめデバイス

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

nexus5 16GBASUS Nexus7 ( 2013 ) TABLET

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