数据传递包含数据的发送与接收
一、向一个活动传递数据(startActivity)
1、数据发送
使用Intent的putExtra的系列重载方法。可以把想要传递的数据暂存在Intent中。
bt5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent(MainActivity.this,resultactivity.class);
String data="hello luowei!!!!";
intend.putExtra("extra_data",data);
startActivity(intend);
}
});
2、数据接收
启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_resultactivity);
Intent intent=getIntent();
//用于获取启动本活动的Intent
String data=intent.getStringExtra("extra_data");
/*
根据相应的getXXX函数来Intent获取数据。
getStringExtra():获取字符串型的数据。
getIntExtra():获取整型的数据。
getBooleanExtra():获取布尔型的数据。
*/
TextView tv=(TextView)findViewById(R.id.text1);
tv.setText(data);
}
二、向上一个活动返回数据(startActivityForResult)
1、启动一个活动并数据发送
bt5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intend=new Intent(MainActivity.this,resultactivity.class);
String data="hello luowei!!!!";
intend.putExtra("extra_data",data);
startActivityForResult(intend,1);
//第二个参数是请求码,用于在回调中判断数据的来源,只要是唯一值就可以了。
}
});
2、返回数据给上一个活动
当前活动是使用startActivityForResult启动的,当前活动被销毁时,将毁掉上一个活动的onActivityResult()方法。
在当前活动中,将需要返回的数据存放在构建的intent中。
然后调用setResult函数,向上一个活动返回数据。第一个参数用于向上一个活动返回处理结果,一般只有REUSLT_OK和RESULT_CANCELED。第二个参数传递带有数据的Intent。
最后使用finish()结束当前活动即可。
返回的两种方式:
(1)按键使用监听事件的方式调用
bt5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in=new Intent();
in.putExtra("data_ret","hello,this is the message returned");
setResult(RESULT_OK,in);
finish();//销毁当前活动。
}
});
(2)通过Back键返回到上一个活动时,会调用onBackPressed回调函数。
@Override
public void onBackPressed() {
Intent in=new Intent();
in.putExtra("data_ret","hello,this is the message returned");
setResult(RESULT_OK,in);
finish();
}