Activity間はIntent、Bundle、onActivity Resultで値を伝えます
5411 ワード
実はActivity間の伝達値はBundleで、intentでも自動的にBundleが生成されて伝達され、中にはonActivity Result()メソッドもあります.
ActivityがstartActivity ForResultによって起動されている場合、このactivityはfinish()後にactivityのonActivity()メソッドをコールバックして起動します.
次はすべてのコードです.
MainActivity.java
SecondActivity.java
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();
}
}