Activity之间的跳转

1.1Activity之间的跳转

一个android程序通常会包含多个Activity,这些Activity之间可以互相跳转并传递数据。

1.1.1在activity之间数据传递

android提供的Intent可以在界面跳转时传递数据。有两种方法:1.Intent的putExtra()方法和Bundle类的数据传递

1.1.1.1使用Intent的putExtra()方法传递数据

(1)putExtra(name, value)方法可以将指定的数据分装到Intent对象中。其中name为表示数据名称的字符串,value为要传递的各种数据类型值。
(2)要获取Intent对象中封装的数据,可调用各种getXXXExyra()方法。在这里插入图片描述
例:第一个Activity

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("name","zhagsan");
intent.putExtra("Score",95);
startActivity(intent);

第一步首先你要new一个Intent出来 这个Intent是表明你要从哪个Activity跳到哪个Activity,Intent new 出来之后你需要putExtra()将数据放进去,最后你要starActivity将intent传出去
例:第二个Activity

Inetent intent = getIntent();
String name =
intent.getStringExtra("name");
int score = 
intent.getIntExtra("score",	0);

首先我们要拿到这个Intent采用getIntent()方法,Intent拿到之后我们还要get其中数据比如这里采用了getStringExtra()可以获取String类型的数据

1.1.1.2使用Bundle对象传输数据

(1)将各种数据封装到一个Bundle对象中,再将Bundle对象封装带Intent对象中传递给启动的活动。
(2)Bundle对象的各种putXXX(String key,XXX value)方法,可将XXX类型的数据封装到其中,对应的用getXXX(String key)方法从其中获取数据。
(3)Bundle对象准备好之后,调用putExtras(bundle)或putExtra(name,bundle)方法将其封装到Intent对象中。
(4)要从Intent对象中获取Bundle对象时,调用对应的getExtras()或getBundleExtra()方法即可。
第一个Activity

Bundle bundle = new Bundle();
bundle.putString("name","zhangsan");
bundle,outInt("score",95);
intent.putExtras(bundle);
startActivity(intent);

首先我们需要new一个Bundle,Bundle new出来后我们需要传递数据到Bundle中,这里我们采用的是putString的方法将name"zhangsan"传递进去,数据放好之后我们要将Bundle放到intent中,调用putExtras()方法最后我们要将intent传出去调用startAcitviy(intent)。
第二个Activity

Bundle bundle  = geIntent().getExtras();
String name = bundle.getString("nmae");
int score = bundle.getInt("score",0);

我们接收数据首先我们要获取intent,采用getIntent()的方法获取intent,我们还需要获取其中的Bundle然后再调用getExtras()方法可以将其中的Bundle获取出来Bundle获取出来后我们再去get其中的数据比如这里的getString(“name”)就可以将name这个数据获取出来

1.1.2Activity之间的数据回传

1.1.2.1startActivityForResult(intemt,requesCode的方法来启动活动,请求返回结果:
1.参数intent是一个lntent对象,用于分装需要传递给活动的数据。
2.参数requestCode为请求码,是一个整数,用来标识当前请求。一个活动可能会接收到其他不同活动的请求,从活动返回时,它会原样返回收到的请求码。
3。在处理返回结果时,可通过请求码判断是不是从所请求的活动返回。
1.1.2.1.2setRessult()方法
1.setRessuly()方法是要在第二个Activity中来写,在第二个Activity中,用setResult(resultCode,intent)方法设置返回结果,resultCode为结果代码,intent为分装了返回数据Intent对象。
2.在第一个Activity中你还需要重写onActivityResult(int requestCode,int resultCode,Intent data)方法来处理结果:
requestCode为从所请求的活动返回的它所接收到的请求码
resultCode为结果代码,常量RESULT_CANCELED表示用户取消了操作;RESULT_OK表示用户正确完成了操作
data为请求活动返回的Intent对象,从中可获取返回数据
第一个Activity

Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);

@override
protected void onActivityResult(int resultCode,Intent data){
if(requestCode == 1){
if(resultCode == 1){
String string=data.getStringExtra("ExtraData")
     }
  }
}

在第一Activity中我们首先要new出Intent然后我们需要请求结果的话要调用startActivityForResult()方法来告诉第二个Activity我需要请求结果,然后在一个界面中你还需要重写onActivityResult(),当第二界面的结果返回时你首先要判断它的requestCode跟resultCode是否是你然后你再将数据取出来进行各种处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值