1,intent向下一个页面传递数据方式?
发送:
通过putExtra(“key”,”value”);方法将数据发送到指定的activity。
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key", "this is MainActivity to secondActivity");
startActivity(intent);
接收:
接收者要知道什么?
首先得知道是那个intent发的?启动该activity的intent发送的数据。
要接收什么类型数据?getStringExtra(“key”);get类型。得知道。
通过getIntent()方法获取到用于启动该activity的intent。
Intent intent = getIntent();
String str = intent.getStringExtra("key");
Log.d("tag_this_activity",str);
接收的数据类型有很多:
getStringExtra()
getIntExtra()
getBooleanExtra()
2,返回数据给上一个activity。
接收:frist
问题:接收者要考虑的?
接收那个intent传来数据?intent是否传来数据,传送是否成功?传来数据的类型?
(1)接收那个intent传来数据?
通过请求码确定。(请求码是通过fristActivity发送时候给的请求码)
因为firstActivity可能要接受好几个intent发来的数据。
所以要给自己发送的intent加一个验证码(请求码)。
(2)intent是否传来数据,传送是否成功?
SecondActivity会发送,RESULT_OK.表示发送数据。
resultCode == RESULT_OK接收数据成功。
(3)传来的数据类型?
通过getStringExtra方法接收。
intent.getStringExtra("key");
FristActivity:
startActivityForResult();
用于启动activity,第一个参数:启动intent对象。第二个参数接收数据时判断哪个intent发来intent。
Intent intent= new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key", "this is MainActivity to secondActivity");
startActivityForResult(intent,1);
onActivityResult(),是secondActivity发送完数据,回调的函数。
作用是用于接收数据。
第一个参数:requestCode,是fristActivity中给的请求码(判断接收那个intent传来数据)。
第二个参数:是否有数据?传递的是否成功?
第三个参数:数据。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return");
Log.d("FirstActivity", returnedData);
}
break;
default:
}
}
发送:second
发送者考虑问题:
不用考虑发送给谁?
是否传递数据。
传递数据是验证是否成功。
这里的intent对象,只有传递数据的功能。这里没有写传递给谁,是因为当前活动销毁之后,会掉了frist中的onActivityResult()方法。
它是根据RESULT_OK,判断数据是否发送成功。
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
问题:为什么不用考虑发送给谁?为什么second不需要知道,该intent要发送给按个activity?
Intent intent = new Intent();
因为调用second的activity就是要发送的,返回的时候,只能返回到first.已经确定了。
所以说向上一个activity传递数据(second向frist传递数据),只需要按back键就可以了。因为intent要把数据传递给谁已经确定了(只能返回到一个activity)。