[Android Studio] インテントで値を引き渡して画面遷移する

どうも、tatsuです!

今日は、インテントで値を引き渡して画面遷移する方法を説明します。

※この記事で使用しているAndroid Studioのバージョンは2.3.3です。

インテントで値を引き渡して画面遷移する

インテントで画面遷移するだけでなく、なにか値を渡したいときがあるかと思います。
インテントで値を引き渡すには、putExtraというメソッドを使用します。

MainActivity.java

MainActivity.javaは以下のようにします。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // idがtransitionのボタンを取得
        Button button = (Button) findViewById(R.id.transition);
        // clickイベント追加
        button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                // インテント作成  第二引数にはパッケージ名からの指定で、遷移先クラスを指定
                Intent intent = new Intent(MainActivity.this, com.android.tatsu.myapplication.SecondActivity.class);
                // 値を引き渡す (識別名, 値)の順番で指定します
                intent.putExtra("text1", "こんにちは");
                // Activity起動
                startActivity(intent);
            }
        });
    }
}

activity_main.xml

activity_main.xmlは以下のようにします。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.android.tatsu.myapplication.MainActivity">

    <Button
        android:id="@+id/transition"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="画面遷移">
    </Button>

</LinearLayout>

SecondActivity.java

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        // MainActivityからインテントを取得
        Intent intent = this.getIntent();
        // 値を取得
        String text = intent.getStringExtra("text1");
        // 画面に表示
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(text);
    }
}

activity_second.xml

activity_second.xmlは以下のようにします。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.android.tatsu.myapplication.SecondActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"/>

</LinearLayout>

結果

↓ボタン押下前

↓ボタン押下後

補足
SecondActivityにて値を受け取るときにintent.getStringExtraとしていましたが、このメソッドは受け取る値の型によって変わります。
主要なものとしては以下があります。

  • String型を取得 ・・・ getStringExtra
  • Int型を取得 ・・・ getIntExtra
  • boolean型を取得 ・・・ getBooleanExtra
  • double型を取得 ・・・ getDoubleExtra
  • 独自クラスを取得 ・・・ getSerializableExtra

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です