一、向下一个活动传递数据
putExtra():第一个参数是键,第二个参数是要传递的数据。
button.setOnClickListener(new View.OnClickListener){
@Override
public void onClick(View view){
String values = "Hello SecondActivity";
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("extra_values",values);
startActivity(intent);
}
}
然后在SecondActivity中将传递的数取出来
public class SecondActivity extends Activity{
@Overried
protected void onCreate(Buddle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Intent intent = getIntent();
String values = intent.getStringExtra("extra_values");
}
}
二、返回数据给上一个活动
startActivityForResult():第一个参数是Intent,第二个参数是请求码。
button.setOnClickListener(new View.OnClickListener){
@Override
pubic void onClick(View view){
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,1);
}
}
请求码只要是一个唯一值就可以
在SecondActivity中添加按钮点击事件
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
button = (Button)findViewBy(R.id.button);
button.setOnClickListener(new View.OnClickListener)(){
@Override
public void onClick(View view){
Intent intent = new Intent();
intent.putExtra("values_return"," Hello MainActivity!");
setResult(RESULT_OK, intent);
finish();
}
});
}
}
setResult():第一个参数专门用于向上一个活动返回处理结果。一般只使用RESULT_OK或者RESULT_CANCELED,第二个参数把带有数据的Itent返回。
最后调用finish()销毁当前活动
在MainActivity中重写onActivityResult()方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent values){
switch(requestCode){
case1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra("values_return");
Log.d("MainActivity",values_return);
}
break;
default:
}
}
调用startActivityForResult()方法,每一个活动返回的数据都会回调到onActivityResult()方法中。首先,检查requestCode来判断数据来源,然后检查resultCode判断处理结果是否成功,最后打印values_return里的返回值。