アプリ作って海外移住

コピペプログラマーのメモ

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();