intent向页面传递数据

1intent向下一个页面传递数据方式?

发送:

通过putExtra(key,value);方法将数据发送到指定的activity

Intent intent = new Intent(MainActivity.this,SecondActivity.class);

intent.putExtra("key", "this is MainActivity to secondActivity");

startActivity(intent);

接收:

接收者要知道什么?

首先得知道是那个intent发的?启动该activityintent发送的数据。

要接收什么类型数据?getStringExtra(key);get类型。得知道。

 

通过getIntent()方法获取到用于启动该activityintent

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();

因为调用secondactivity就是要发送的,返回的时候,只能返回到first.已经确定了。

 

所以说向上一个activity传递数据(secondfrist传递数据),只需要按back键就可以了。因为intent要把数据传递给谁已经确定了(只能返回到一个activity)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值