遷移元Activity
遷移先Activityに値を渡す
// 遷移元と遷移先を設定
Intent i = new Intent([遷移元Activity], [遷移先Activity]);
// 引数を設定
i.putExtra([値の識別ID], [値]);
// 遷移
startActivityForResult(i, [要求コード(任意の値)]);
例)
MainActivity から SubActivity へ遷移する場合
Intent i = new Intent(MainActivity.this, SubActivity.class);
i.putExtra("Value", "わお");
startActivityForResult(i, 0);
遷移先Activityからの戻り値を取得する。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
// 要求コードを判別
if(requestCode == [要求コード(任意の値)]){
// 結果がOKか
if(resultCode == RESULT_OK){
// 戻り値(文字列)を出力
Toast.makeText(this, data.getStringExtra([値の識別ID]), Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "キャンセルされました", Toast.LENGTH_LONG).show();
}
}
}
例)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0){
// 結果がOKか
if(resultCode == RESULT_OK){
// 戻り値(文字列)を出力
Toast.makeText(this, data.getStringExtra("Value"), Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "キャンセルされました", Toast.LENGTH_LONG).show();
}
}
}
遷移先Activity
遷移元Activityからの引数を取得
Intent i = getIntent();
// 引数の取得
i.getStringExtra([値の識別ID]);
例)
Intent i = getIntent();
i.getStringExtra("Value");
遷移元Activityへの戻り値を設定
Intent i = new Intent();
// 戻り値の設定
i.putExtra([値の識別ID], [値]);
// 結果の設定
setResult([結果], i);
例)
Intent i = new Intent();
i.putExtra("Value", "わあ");
setResult(RESULT_OK, i); // 結果はOK.キャンセルの場合はRESULT_CANCELED
注意事項
"AndroidManifest.xml"の"Application Nodes"に遷移先及び遷移元の画面が設定されていない場合エラーになります(LogCatにエラーが出力されます)。
"Application Nodes"に遷移先及び遷移元の画面を設定すればOK。
それでもダメなら、Eclipseとエミュレータを再起動しなければいけないと思います。(なんか、SDKのバグが多い気がする)
最終更新:2011年07月13日 01:14