Intent传参

转载自:http://www.cnblogs.com/crearo-ssy/archive/2012/07/11/2585969.html


 intent翻译为中文的意思是意图,目的。它的作用就是调用某个组件去做某一个事情。比如从当前运行的activity跳转到另一个activity,当前activity要启动一个service或启动一个broadcastreceive(广播接收器),此时就需要用intent来完成。简单的说intent是各个组件的一个桥梁。既然充当了桥梁的角色,那么intent就该可以传递数据,把当前的组件的数据传递到另一个组件去使用,那么intent是如何来传递值的呢?通过Intent类提供的setData()和putExtra()方法传递。前一个参数是uri,是个标识比如一个文件的路径等。后一个参数可以是值也可以是对象,以键值对的形式传递。

 ActivityA:

    Intent intent=new Intent();
    intent.setClass(ActivityA.this,ActivityB.class);
    intent.putExtra("extra", "Welcome to ...");
    startActivity(intent);

ActivityB:

  Intent intent=getIntent();
  String stringValue
=intent.getStringExtra("extra");

 如果把stringValue的值改变,ActivityA中extra所对应的值不会变。
以上的列子是通过putExtra()方法传值的,现在看看对象的传递,是怎么传递的?

 ActivityA:

    Intent intent=new Intent();    

    intent.setClass(ActivityA.this,ActivityB.class);   

    Student s=new Student("shao",20);

    intent.putSerializable("STUDENT", s);    

    startActivity(intent);

 ActivityB:

  Intent intent=getIntent();  

  Student s=intent.getSerializable("STUDENT");

 现在如果把ActivityB中得到的Student对象s ,改变一个值,如s.setName("yang");那么ActivityA里的s会变吗?不会变,因为intent传递对象时,传递的是一个副本(深拷贝)。

所以在android中,intent进行数据传递时,基本数据类型和对象传递的都是副本,改变传递过来的值,不会改变原来的值。注意的是在进行对象传递的时候,该对象所对应的类要实现Serializable接口或Parcelable接口。


转载自:http://www.2cto.com/kf/201208/148480.html

EditText et = (EditText)findViewById(R.id.etName);//定义的文本框。

String aa = et.getText().toString();//获取文本框内容。

Intent intent = new Intent();

intent.setClass(helloworld.this,android2.class);//helloworld.class为Activity,android2.class为Activity。

intent.putExtra("name", "传值测试!");//设置传递内容。

startActivity(intent);//跳转。

finish();//关闭当前Activity。

第一种写法,用于批量添加数据到Intent:
Intent intent = new Intent();
Bundle bundle = new Bundle();//该类用作携带数据
bundle.putString("name", "学习android");
intent.putExtras(bundle);//为意图追加额外的数据,意图原来已经具有的数据不会丢失,但key同名的数据会被替换
第二种写法:这种写法的作用等价于上面的写法,只不过这种写法是把数据一个个地添加进Intent,这种写法使用起来比较方便,而且只需要编写少量的代码。
Intent intent = new Intent();
intent.putExtra("name", "学习android");

在android2的onCreate方法中取值

【取值方法:String test= (String)(this.getIntent().getExtras().getString("name"));】


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值