展会信息港展会大全

Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
来源:互联网   发布日期:2016-01-14 10:27:39   浏览:1558次  

导读:前面我们了解了如何启动一个Activity,一个Activity在启动另外一个Activity的时候可能会遇到需要传值的需要。Activity之间传值是通过Bundle来实现的。一、通过Bu...

前面我们了解了如何启动一个Activity,一个Activity在启动另外一个Activity的时候可能会遇到需要传值的需要。Activity之间传值是通过Bundle来实现的。

一、通过Bundle传值介绍

Intent提供了多个重载方法来携带数据

putExtras(Bundle data):向Intent中放入需要的数据包

Bundle getExtras():取出Intent所携带的数据

putExtras(String name, Xxx value):向Intent中按照key-value形式传值

getXxxExtra(String name):从Intent中按key取值

从上面方法中可以看到Bundle就像一个数据包一样,Bundle中存取数据的方法如下:

pubXxx(String key, Xxx data):向Bundle中放入数据

pubSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象。

getXxx(Strign key):从Bundle中取出数据

getSerializable(String key, Serializable data):从Bundle中取出一个可序列化的对象。

Bundle对象是由系统需要时自动创建的,我们不需要管。

二、通过Bundle传值例子

MainActivity.java中的核心代码

Intent intent = new Intent();

intent.setAction("com.example.intent.action.TEST_ACTION");

intent.putExtra("test1", 1);

Bundle bundle = new Bundle();

bundle.putBoolean("test2", false);

bundle.putSerializable("test3", new Person("大碗干拌", 2));

intent.putExtras(bundle);

startActivity(intent);Person.java类

package com.example.testintent;

import java.io.Serializable;

public class Person implements Serializable{

private String name;

private int age;

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return "姓名:" + name +", " + "年龄:" + age;

}

}

SecondActivity.java

public class SecondActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

System.out.println(bundle.getInt("test1"));

System.out.println(bundle.getBoolean("test2"));

System.out.println(intent.getSerializableExtra("test3"));

}

}运行结果

三、通过Bundle返回结果

前面已经提到过了,Activity还提供了一个startActivityForResult(Intent intent, int requestCode)方法来启动其他Activity。这样就需要如下两个条件:

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港