传参
activity传参分为向上传参和向下传参,传参都是通过intent实现
向下传参
由前一个activity传到下一个activity,比如在Activity1中打开Activity2,就是向下传参。传参时在Activity1中放入参数,在Activity2中取出参数
放参数
Intent intent = new Intent("com.example.intenttest.showparam_action");
intent.putExtra("name1", "value1");
intent.addCategory("com.example.intenttest.showparam_category");
startActivity(intent);
取参数
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
String value1 = getIntent().getStringExtra("name1");
Log.i(TAG, "接收到的值:"+value1);
}
向上传参
由后一个activity传到上一个activity,比如在Activity1中打开Activity2,关闭activity2时传递参数到Activity1就是向上传参。
具体操作:Activity1调用startActivityForResult(启动activity就是为了结果)启动Activity2,Activity2调用setResult()返回结果,Activity1在onActivityResult获取结果
Activity1启动activity为了结果
Intent intent2 = new Intent("com.example.intenttest.showparam_action");
intent2.addCategory("com.example.intenttest.showparam_category");
startActivityForResult(intent2, REQUEST_CODE);
Activity2设置返回结果
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.btn4:
Intent intent = new Intent();
intent.putExtra("data_return", "hello mainactivity");
setResult(RESULT_OK, intent);
finish();
break;
}
}
Activity1取得结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
switch(requestCode){
case REQUEST_CODE:
//RESULT_OK
if(resultCode == RESULT_OK){
String value = data.getStringExtra("data_return");
Log.i(TAG, "返回值:"+value);
}
break;
default:
break;
}
}