Activity間はIntent、Bundle、onActivity Resultで値を伝えます

5411 ワード

実はActivity間の伝達値はBundleで、intentでも自動的にBundleが生成されて伝達され、中にはonActivity Result()メソッドもあります.
ActivityがstartActivity ForResultによって起動されている場合、このactivityはfinish()後にactivityのonActivity()メソッドをコールバックして起動します.
次はすべてのコードです.
MainActivity.java
package com.kale.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        //intent bundle , bundle , bundle, bundle intent
        intent.putExtra("KEY", "VALUE");
        Bundle bundle = new Bundle();
        bundle.putString("KEY from bundle", "VALUE from bundle");
        intent.putExtras(bundle);
        /* startActivityForResult(intent, INVITE_CODE);
         Activity2, finish()Activity2  ,
         Activity1 , onActivityResult ,
         Intent */
        startActivityForResult(intent, 123);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String result = data.getExtras().getString("requestKEY");// Activity  
        System.out.println(" :"+result);
    }
}

 
SecondActivity.java
package com.kale.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;

public class SecondActivity extends ActionBarActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        Intent intent = getIntent();
        
        System.out.println("value0 = "+intent.getStringExtra("KEY"));
        Bundle bundle = intent.getExtras();
        String value01 = bundle.getString("KEY");
        String value02 = bundle.getString("KEY from bundle");
        System.out.println("value01 = "+value01);
        System.out.println("value02 = "+value02);
        
         Intent resultIntent = new Intent();
         resultIntent.putExtra("requestKEY", "requestValue");
         // 
         setResult(RESULT_OK, resultIntent);// activity 
         finish();
    }
    
    
}