Activity同士での連携

Activity同士での連携

Activity同士の連携は
startActivityForResult()

OverrideしたonActivityResult()で行う

startActivityForResult()で起動先のActivityを開始すれば
onActivityResult()で処理結果を受け取れる

処理結果は、起動先のActivityを終了したタイミングで呼び出される

まず、起動元Activityを実装する
ここで、startActivityForResult.によるActivityの開始
起動先のActivityから処理結果を受け取るonActivityResult()を実装する

まず、リクエストコードは定数宣言しておく

private static final int REQUEST_CODE = 1;

次に、ボタンを押してActivity連携したいので
onClick()をOverrideする

@Override
public void onClick(View v){
//呼び出す画面Intent作成
final Intent intent = new Intent(MainActivity.this, SendActivity.class);

//Intentのキーに文字列設定
EditText inputString = (EditText)findViewById(R.id.input);
String value = inputString.getText().toString();
input.putExtra("key_name",value);

//戻り値を取得できる呼び出し方法でActivity開始
startActivityForResult(intent, REQUEST_CODE);

}

次に、onActivityResult()のOverride

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){

super.onActivityResult(requestCode,resultCode,data);

//startActivityForResult()実行時の引数に指定したRequestCodeを比較する
if(requestCode == REQUEST_CODE){

//Activity終了時のフラグ判定
if(resultCode == RESULT.OK){

//戻り値として設定された key_nameの値を取得
String value = data.getStringExtra("key_name");

EditText result = (EditText)findViewById(R.id.result);
result.setText(value);
}
}
}

これで、元はできたので起動先のActivityを実装

起動先のActivityでは
Intent経由でパラメーターを受け取る

起動元のActivityへ処理結果を返すので
setResult()を使う

まずは、Intentで渡されたデータがあるか判定
!= nullなら中身ありなので、文字列を取得

Intent intent = getIntent();
if(intent != null){

//渡された文字列を取得
String sendvalue = intent.getStringExtra("key_name");
EditText getString = (EditText)findViewById(R.id.inputString);
getString.setText(sendvalue);
}

そして、起動元へ結果を送る処理の実装

findViewById(R.id.backActivity)setOnClickListener(
new  onClickListener(){

@Override
public void onClick(View v){

EditText result = (EditText)findViewById(R.id.result);

//戻り値に文字列が設定されている場合、戻り値を設定
if(result.getText().length() > 0){

//戻り値のためのIntent作成
Intent data = new Intent();

//戻り値設定
data.putExtra("key_name",data.getText().toString());

//成功とさて設定
setResult(RESULT_OK, data);
}
//Activityの終了
finish();
}
});

Activityから別のActivityへパラメーターを渡すには
Intentにパラメーターを設定する

Intentは仲介役みたいなかんじ

Intentを受け取るには
getIntent()で受け取れる

なお、別のActivityを呼び出して、そこの結果を受け取りたいのなら
startActivityForResult()を使う

startActivityForResult()を使うことで
呼び出したActivityが終了したときに
onActivityResult()が呼ばれるので
setResult()で設定したIntentを戻り値として取得できる

注意点としては
startActivityForResult()は
onRestart()より前に呼ばれるので
処理のタイミングに注意すること

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です