Activity之间的三种传值方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity之间的三种传值方式相关的知识,希望对你有一定的参考价值。

 

***************************************

第一种:Extras:额外的,附加的.在Intent中附加额外的消息

//传值

Intent intent = new Intent(this, XXXActivity.class);

intent.putExtra(key, value);

startActivity(intent);

//取值

getIntent()方法得到intent对象

Intent intent = getIntent();

//获取Intent中的数据:getXXXExtra()方法

intent.getIntExtra(key, value);--->int

intent.getStringExtra(key);--->String

显示方式:

吐司:Toast.makeText(this, "", Toast.LENGTH_SHORT).show();

打印:Log.i("TAG", "....");

显示在TextView控件上:

mTextView.setText();

 

******************************************************

第二种:Bundle传值

//传值:

Intent对象

Intent intent = new Intent(.......);

创建Bundle对象,包裹数据

Bundle bundle = new Bundle();

bundle.putInt(key, value);

bundle.putString(...);

bundle.putBoolean(...);

......

将bundle挂载到Intent对象上

intent.putExtras(bundle);

跳转页面

startActivity(intent);

 

//取值

getIntent()得到intent对象

获取Bundle对象

intent.getExtras();--->Bundle bundle

bundle.getInt(key);

bundle.getString(key);

...........

显示:同上

 

*************************************************

第三种:通过对象方式传值

//传值

Intent intent = new Intent(this, XXXActivity.class);

创建一个类实现序列化(Person为例)

部分代码:

public class Person implements Serializable{

 private static final long serialVersionUID = 1L;

 private String name;

 private List<String> list;

 ....}

创建Person对象

Person person = new Person();

person.setName(...);

List<String> list = new ArrayList<>();

list.add(...);

person.setList(list);

在intent上设置序列化对象

intent.putExtra(key, person);

跳转

startActivity(intent);

//取值

获取intent对象

getIntent();-->Intent intent

获取序列化对象

intent.getSerializableExtra(key);-->Person person

显示在TextView上:

mTextView.setText(person.toString());

 

以上是关于Activity之间的三种传值方式的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序的组件间三种传值方式

Vue2.0的三种常用传值方式父传子子传父非父子组件传值

ajax的三种传参方式

django之创建第7-6-第三种传值方式

cookie 和 session的区别 & 三种传值方式

UIViewControl之间的七种传值方式