最終更新:
moonlight_aska 2011年07月30日(土) 09:24:57履歴
画面間でのデータを受け渡しは, インテント(Intent)を使って行う.

↓


↓

↓

- MainActivity.java
- インテントのインスタンスを生成する.
- Intent#putExtraメソッドでインテントに値を持たせる. Intent#putExtra(任意のキー値, 持たせたいデータ)
- startActivityメソッドを使って, サブ画面のアクティビティを起動する.
package com.moonlight_aska.android.mainactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private EditText edit = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit = (EditText)findViewById(R.id.edittext01_id);
Button btn = (Button)findViewById(R.id.button01_id);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// インテントへのインスタンス生成
Intent intent = new Intent(MainActivity.this, SubActivity.class);
// インテントに値をセット
intent.putExtra("keyword", edit.getText().toString());
// サブ画面の呼び出し
startActivity(intent);
}
});
}
}
- SubActivity.java
- getIntentメソッドで, インテントを取得する.
- Intent#getStringExtraメソッドで, データを取得する.
package com.moonlight_aska.android.mainactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SubActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);
TextView text = (TextView)findViewById(R.id.textview03_id);
// インテントを取得
Intent intent = getIntent();
// インテントに保存されたデータを取得
String data = intent.getStringExtra("keyword");
text.setText(data);
Button btn = (Button)findViewById(R.id.button02_id);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// サブ画面の終了
finish();
}
});
}
}
- res/layout/main.xml
- TextView, Buttonの表示については, 「テキストビューを作成する」, 「ボタンを作成する」を参照.
- sub.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:id="@+id/textview01_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/textview01_label"
/>
<EditText android:id="@+id/edittext01_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/button01_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text= "@string/button01_label"
/>
</LinearLayout>
- res/AndroidManifest.xml
- サブ画面のアクティビティを登録する.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.moonlight_aska.android.mainactivity"
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=".SubActivity"
android:label="@string/app_name">
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>

↓

- MainActivity.java
- インテントのインスタンスを生成する.
- startActivityFromResultメソッドを使って, サブ画面のアクティビティを起動する.
- onActivityResultメソッドをオーバーライドする.
- requestCode, resultCodeをチェックする.
- データを取得する.
package com.moonlight_aska.android.mainactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private TextView text = null;
private static final int SUB_ACTIVITY = 1001;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.textview02_id);
Button btn = (Button)findViewById(R.id.button01_id);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// インテントへのインスタンス生成
Intent intent = new Intent(Example01.this, SubActivity.class);
// サブ画面の呼び出し
startActivityForResult(intent, SUB_ACTIVITY);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
// requestCodeがサブ画面か確認する
if(requestCode == SUB_ACTIVITY) {
// resultCodeがOKか確認する
if(resultCode == RESULT_OK) {
// 結果を取得して, 表示する.
text.setText(data.getCharSequenceExtra("keyword"));
}
}
}
}
- SubActivity.java
- インテントのインスタンスを生成する.
- Intent#putExtraメソッドでインテントに値を持たせる.
- setResultメソッドで結果をセットする.
- finishメソッドで元の画面に戻る.
package com.moonlight_aska.android.mainactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SubActivity extends Activity {
/** Called when the activity is first created. */
private EditText edit = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);
edit = (EditText)findViewById(R.id.edittext01_id);
Button btn = (Button)findViewById(R.id.button02_id);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// インテントのインスタンス作成
Intent data = new Intent();
// インテントに値をセット
data.putExtra("keyword", edit.getText().toString());
// 結果を設定
setResult(RESULT_OK, data);
// サブ画面の終了
finish();
}
});
}
}

↓

↓

コメントをかく