android开发中,Bundle和Intent的联系和区别?

辉哥聊职场聊家庭 2013-07-30 05:49:11
在一个Activity中,有一个编辑框,一个Button按钮,
当我点击按钮时,会读取编辑框里的字符串,然后跳转到另外一个Activity,在该Activity中显示传递的字符串
在按钮监听响应函数中,代码如下:
public void onClick(View arg0)
{
String info=etName.getText().toString();
Bundle bundle = new Bundle();//(1)
bundle.putString("name", info);//(2)
Intent intent=new Intent(MainActivity.this,BundleDemo1.class);
intent.putExtras(bundle);//(3)
finish();
startActivity(intent);

}
如果我不要(1)、(2)两句代码,把(3)改为intent.putExtra("name", info); 照样能跳转到我想要的Activity,
那为什么还需要使用Bundle呢?是不是多此一举?
另外,finish();这句话是干什么用的?

关于Bundle具体使用方法我还没弄明白,求大神指导。。。
...全文
737 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
syita111 2013-07-31
  • 打赏
  • 举报
回复
引用 2 楼 foreverhuylee 的回复:
[quote=引用 1 楼 sinom 的回复:] 1、执行intent.putExtra("name", info)等同于(1)(2),你可以看成是putExtra是一个封装后的方法 2、finish()是关闭(从其task踢出)当前Activity
在MainActivity中加了 finish()这一句后,当我跳转到第二个activity即BundleDemo1中,我按返回键(BACK)后,发现程序直接退出了,这是为什么呢?[/quote] mainactivity到BundleDemo1的时候不要加finish,你直接跳转系统会把mainactivity放入堆栈中,按返回键就回到mainactivity,你把mainactivity先finish了,按回车键就只能返回更上次的页面即桌面了。希望对你有用
荒颜 2013-07-31
  • 打赏
  • 举报
回复
引用 2 楼 foreverhuylee 的回复:
[quote=引用 1 楼 sinom 的回复:] 1、执行intent.putExtra("name", info)等同于(1)(2),你可以看成是putExtra是一个封装后的方法 2、finish()是关闭(从其task踢出)当前Activity
在MainActivity中加了 finish()这一句后,当我跳转到第二个activity即BundleDemo1中,我按返回键(BACK)后,发现程序直接退出了,这是为什么呢?[/quote] intent自带空的bundle对象 所以intent.putExtra只是个封装的操作 finsh()会结束activity 导致调用destroy 这样task就没有他的记录,回退时不会调用A Activity的onStart来启动前一个activity
CuGBabyBeaR 2013-07-30
  • 打赏
  • 举报
回复
Bundle只是一个信息的载体 将内部的内容以键值对组织 Intent负责Activity之间的交互 自己是带有一个Bundle的 Intent.putExtras(Bundle bundle)直接将Intent的内部Bundle设置为参数里的bundle Intent.getExtras()直接可以获取Intent带有的Bundle intent.putExtra(key, value) 和 Bundle bundle = intent.getExtras(); bundle.putXXX(key, value); intent.putExtras(bundle); 是等价的 intent.getXXXExtra(key) 和 Bundle bundle = intent.getExtras(); bundle .getXXX(key); 是等价的(XXX代表数据/对象类型 String boolean 什么的) finish()是退出当前Activity 你用Intent启动新Activity后调用finish() 会导致调用finish()的那个Activity退出(虽然它已经在后台运行, onStop了) 但你看到的只是新Activity启动了 当你在新Activity中按返回键的时候 新的Activity也退出了 这样你的Application 已经没有活动的Activity Application也就自动退出
  • 打赏
  • 举报
回复
引用 1 楼 sinom 的回复:
1、执行intent.putExtra("name", info)等同于(1)(2),你可以看成是putExtra是一个封装后的方法 2、finish()是关闭(从其task踢出)当前Activity
在MainActivity中加了 finish()这一句后,当我跳转到第二个activity即BundleDemo1中,我按返回键(BACK)后,发现程序直接退出了,这是为什么呢?
LichKingSZ 2013-07-30
  • 打赏
  • 举报
回复
1、执行intent.putExtra("name", info)等同于(1)(2),你可以看成是putExtra是一个封装后的方法 2、finish()是关闭(从其task踢出)当前Activity

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧