別のActivityへ移動する方法(画面を移動する)

Activity

Androidアプリ開発で、ある画面から別の画面へ遷移する方法を解説します。

メインの画面のボタンをクリック(タッチ)すると、別の画面へ移動するプログラムを書いてみます。

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		Button btn = (Button)findViewById(R.id.btn01);
		btn.setOnClickListener(new ButtonOnClickListener());
	}
	
	private class ButtonOnClickListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			
			// 引数1:自身のActivity、引数2:移動先のActivity名
			Intent intent = new Intent(MainActivity.this, SubActivity.class);
			// Activityの移動
			startActivity(intent);
		}
		
	}
}

別のActivityを呼び出すためには、以下の手順で実現させます。
①Intentクラスのインスタンスを生成(生成時に、移動先のActivityを指定)
②startActivityメソッドを実行する(作成したIntentインスタンスを渡す)

Intentクラスのインスタンス生成時、第一引数に自身のインスタンス、第二引数に移動先のActivity情報を渡します。
第一引数で、単純なthisではなく、MainActivity.thisとしていますが、ここでは、thisだけではコンパイルエラーになってしまいます。
あくまでインナークラスであるButtonOnClickListenerクラスの中での処理になるので、thisではインナークラスインナButtonOnClickListenerクラスを指してしまうからです。
MainActivityを指定することで、親クラスであるMainActivityですよ!とプログラムが分かるようにしています。

さて、これだけでは、まだActivityの移動はできません。
次に、「AndroidManifest.xml」に移動先のActivity情報を追加します。

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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"
			android:label="@string/app_name">
		</activity>
		
    </application>

AndroidManifest.xmlにActivity情報がないと、エラーで怒られてしまいます。
忘れがちな手順なので、Activityを追加した場合は、
忘れないうちにAndroidManifest.xmlに追加することをお勧めします。

これで、ボタンをクリック(タッチ)すると、SubActivityの画面に移動するようになります。
簡単ですね。

Activityの移動は、Androidアプリを作成する上で、必ず必要になる処理なので、
必ず覚えておくことをお勧めします。

コメント

  1. ReinaldoLemm より:

    I see your blog needs some fresh & unique articles. Writing manually is
    time consuming, but there is solution for this.

    Just search for; Masquro’s strategies

タイトルとURLをコピーしました