startActivityForResult onActivityResult 戻り値が必要な処理
onActivityResultが終わったら次、自動的にonresumuがよばれる。
バックキー以外で戻ってきた時に必要。
戻り値が必要
-------------送り側---------------------
戻り値が必要な時は
startActivityForResultを使う
startActivityForResult(intent, SUB_ACTIVITY);
第1引数はintent 第2引数リクエストコード
public
void
button1_click(View view){
private
static
final
int
SUB_ACTIVITY =
101
;
EditText editText1 = (EditText)findViewById(R.id.editText1);
String text = editText1.getText().toString();
Intent intent =
new
Intent(
this
, SubActivity.
class
);
intent.putExtra(
"TestData"
, text);
startActivityForResult(intent, SUB_ACTIVITY);
}
戻って来たら呼ばれる
onActivityResult
第1引数 リクエストコード
第2引数 リザルトコード 相手が設定
RESULT_OK
RESULT_CANCELED
バックキーで戻って来たのか リザルトコードで判定できる。
if
(requestCode == SUB_ACTIVITY) { は・・・
この条件判定文により、SubActivityからのリクエストコードかを判定します。1つのアクティビティから複数種類のアクティビティを呼び出す場合にこの条件で判別をします。
if
(resultCode == RESULT_OK) {
この条件判定文では、呼び出し先のアクティビティの終了状態を判定します。RESULT_OKは正常終了を示しています。呼び出し先のアクティビティが正常に終了した場合にのみ処理を実行します。
"ReturnData" 相手側intentでセット。
呼び出し先のIntentオブジェクトのgetStringExtra()メソッドを呼び出し呼び出し先のアクティビティから返された値を取得します。取得した値をTextViewに表示します。
///////////////////////受け取り これがいい
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
String text = data.getStringExtra("returndata");
}
///////returndataについて、送り側:
Intent returnIntent = new Intent(); //intent 設定
returnIntent.putExtra("returndata","1"); //returndataに1をセット
setResult(RESULT_OK, returnIntent); //結果OKを送る準備
finish();