Androidで画面遷移

2画面サンプル

アプリ概要
  • プロジェクト名:IntentSample
  • アプリケーション名:IntentSample
  • パッケージ:com.example
  • Activity
    • 遷移元画面:MainActivity
    • 遷移先画面:NextActivity
  • xml
    • 遷移元画面:main.xml
    • 遷移先画面:next.xml
作成手順

■画面遷移の方法

  • 呼ばれる側のActivityを新規作成 例)NextActivity
  • 作成したActivityで使うlayoutファイルを作成 例)next.xml
    • layoutファイルはresフォルダ以下のlayoutフォルダ内に作成する
  • AndroidManifestファイルを修正する
    • <修正内容>
    • applicationタグ内にactivityタグを追加する。
    • android:name属性に?で作成したActivityを指定する
例)
<activity android:name=".NextActivity" android:label="@string/app_name">
</activity>
  • プロジェクト作成時にデフォルトで作成されているActivityを修正する
    • 画面遷移をするにはIntentを使う
    • Intentオブジェクトを生成する
      • intent = new Intent(呼び出し元Activity, 呼び出したいActivity);
    • 呼び出すにはIntent#startActivityを使う
例
Intent intent = new Intent(MainActivity.this,
		NextActivity.class);
startActivity(intent);
  • 遷移先として作成したActivityを修正する。
    • setContentViewで遷移先レイアウトとして作成したxmlを指定する
	例)setContentView(R.layout.next);

■Intentを使ってデータを受け渡しする
呼び出し先にデータを渡したいときはIntentを使う

  • Intentに値を持たせる
    • IntentクラスのputExtraメソッドを使用する
    • Intent#putExtra(任意のキー値, 持たせたいデータ);
例)
intent.putExtra("data", "sampledata");
  • Intentから値を取り出す
    • Intentオブジェクトを取得する
      • getIntentメソッドを使ってIntentを取得する
    • データを取得する
      • Intent#getStringExtraメソッドを使う
	例)
        Intent intent = getIntent();
        String data = intent.getStringExtra("data");

ソース

■MainActivity

package com.example;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
	private Button btSend;
	private EditText editSendata;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        this.btSend = (Button)findViewById(R.id.ButtonSend);
        this.editSendata = (EditText)findViewById(R.id.EditSendData);
        
        //ボタンクリック時の処理を実装する
        this.btSend.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//Intentをつかって画面遷移する
				Intent intent = new Intent(MainActivity.this,
						NextActivity.class);
				intent.putExtra("data", editSendata.getText().toString());
				startActivity(intent);
			}
		});
    }
}

■NextActivity

package com.example;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class NextActivity extends Activity {
	private TextView txtResultData;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.next);
        
        this.txtResultData = (TextView)findViewById(R.id.Result);
        
        //Intentを取得する
        Intent intent = getIntent();
        
        //Intentに保存されたデータを取り出す
        String data = intent.getStringExtra("data");
        this.txtResultData.setText(data);
    }
}

■main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<EditText 
    android:layout_height="wrap_content" 
    android:text="SendData" 
    android:id="@+id/EditSendData" 
    android:layout_width="fill_parent">
</EditText>
<Button 
    android:layout_height="wrap_content" 
    android:text="Send" 
    android:id="@+id/ButtonSend" 
    android:layout_width="fill_parent">
</Button>

</LinearLayout>

■next.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Result" 
    android:id="@+id/Result">
</TextView>
</LinearLayout>

■AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example" android:versionCode="1" android:versionName="1.0">
	<application android:icon="@drawable/icon" 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=".NextActivity" android:label="@string/app_name">
		</activity>
	</application>
	<uses-sdk android:minSdkVersion="4" />

</manifest>