Androidの明示的IntentでActivityを起動する方法

2019年5月16日

本稿では、AndroidでIntentを使用してActivityを起動する方法を説明します。

 

 

IntentでActivityを起動するには?

IntentでActivityを起動するには、以下の2種類があります。

  • 明示的Intent:Activityを指定して起動する
  • 暗黙的Intent:Activityを指定しないで起動する

 

本稿では明示的Intentでの方法を説明しますので、

暗黙的Intentでの方法が気になる方はこちらをご覧ください。

 

明示的IntentでActivityを起動するには?

AndroidManifest.xmlにIntentを呼び出すActivityと
Intentで呼び出されるAcvtivityを定義する

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.ithack.sample" >
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
<activity
android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>
             <activity
                 android:name=".SubActivity">
             </activity>
    </application>
</manifest>

 

Intentを使用してSubActivityを呼び出す処理を記述する。

下記のサンプルではボタンを押下した際にSubActivityを呼び出しています。

 

明示的IntentにはActivityを起動するだけでなく、パラメータとして文字列を渡すことができます。

下記の2が文字列をIntentに格納する処理ですがこれを使用することによって他画面で文字列の情報を、

簡易的に渡すことができます。

public class MainActivity extends Activity implements OnClickListener{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        //buttonを取得
        Button btn = (Button)findViewById(R.id.Button01);
        btn.setOnClickListener(this);
    }
 
    //インターフェイスを実装 implements OnClickListener
    public void onClick(View v) {
        //1)Intentに呼び出すAvtivityを格納
        Intent intent = new Intent(getApplication(), SubActivity.class);
        //2)Intentに文字列を格納
        intent.putExtra("info.ithack.sample", "Test");
        //3)startActivityでSubActivityを起動
        startActivity(intent);
    }
}

 

Intentを受け取る画面でgetIntentを記述する

public class SubActivity extends Activity
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sub);
        TextView textView = findViewById(R.id.text_view);
        Intent intent = getIntent();
        String data1 = intent.getStringExtra(MainActivity."Test");
        textView.setText(data1);
    }
 
}

 

 

IntentでActivityを起動する方法のまとめ

  1. IntentでActivityを起動する方法を明示的Intentと呼ぶ。
  2. 明示的Intentの起動方法としてまず、AndroidManifest.xmlでActivityを定義する。
    (Intentを投げる画面と受け取る画面)
  3. Intentには文字列を付与することができ、画面間で文字列の受け渡しができる。