在Android开发中,有时候需要从一个Activity中传递数据到另一个Activity中,在Bundle中已经封装好了简单数据类型,例如String ,int ,float等。但是如果我们想要传递一个复杂的数据类型,比如一个Book对象,该怎么办呢?
仔细的看了一下Bundle中的方法,其中有一个是putSerializable()方法,Serializable对象是一个可恢复对象接口,我们只需要让Book对象实现Serializable接口,就可以使用Bundle.putSerializable()方法传递Book对象了。废话不多说了,现将代码贴上:
package com.bundletest.model.fneg;
import java.io.Serializable;
/**
*@Copyright:Copyright (c) 2008 - 2100
*@Company:Sagret
*@Author:fengcunhan fengcunhan@gmail.com
*@Package:com.bundletest.model.fneg
*@FileName:Book.java
*@Time:2010-12-19
*@User:feng
*/
public class Book implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String id;
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
实例化Book类,得到Book对象book以及设置成员变量:
if(TextUtils.isEmpty(bookName)||TextUtils.isEmpty(author)||TextUtils.isEmpty(id)){
Toast.makeText(AndroidBundleActivity.this, "输入框不能为空", Toast.LENGTH_SHORT).show();
}else{
Book book=new Book();
book.setName(bookName);
book.setAuthor(author);
book.setId(id);
Intent intent=new Intent(AndroidBundleActivity.this,RecieveActivity.class);
Bundle bundle=new Bundle();
bundle.putSerializable("book", book);
intent.putExtras(bundle);
startActivity(intent);
}
在另一个Activity中获取传递过来的book对象,并显示:
Intent intent=this.getIntent();
Bundle bundle=intent.getExtras();
Book book=(Book)bundle.getSerializable("book");
nameText.setText("书名:"+book.getName());
authorText.setText("作者:"+book.getAuthor());
idText.setText("ID:"+book.getId());
分享到:
相关推荐
本篇文章将详细讲解Bundle的两种主要数据传递方式:传递简单数据和传递自定义数据。 一、传递简单数据 1. 基本类型数据传递:Bundle支持基本类型的赋值操作,如int、String、boolean等。例如,我们可以这样传递一...
Bundle是一个键值对的数据结构,它类似于Java中的HashMap,可以存储各种基本数据类型(如int、String、boolean等)以及复杂的对象(如Parcelable和Serializable)。Bundle在Android中主要用于保存Activity的状态,当...
在目标`Activity`中,我们可以通过`getIntent()`获取到传递过来的`Intent`,然后使用`getExtras()`或`getBundleExtra()`方法来取出数据。 ```java // 在TargetActivity的onCreate()方法中 Intent intent = ...
通过Intent,我们可以将基本数据类型(如字符串、整数等)、Parcelable对象、Serializable对象以及额外的数据捆绑到Intent中,然后在启动新Activity时传递这些数据。 1. 使用putExtra()和getExtra()方法:这是最...
"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...
当我们需要传递复杂的数据时,可以将数据封装到`Bundle`中,然后通过Intent将`Bundle`传递给目标Activity。 以下是使用`StartActivityForResult`和`Bundle`传递数据的基本步骤: 1. **创建Intent**:在源Activity...
对于简单的数据类型(如字符串、整型、浮点型、布尔型等),我们可以在创建Intent时直接附加数据。 例如,在`LoginActivity.java`中,我们可能需要将登录的用户名和密码传递到`MainActivity.java`: ```java // ...
3. 在目标Activity中提取数据:在目标Activity的`onCreate(Bundle savedInstanceState)`或`onNewIntent(Intent intent)`方法中,可以通过调用`getExtras()`来获取Intent中的Bundle,然后使用`get(String key)`或`...
除了基本类型,我们还可以传递更复杂的数据类型,例如字符串、浮点数、布尔值,甚至自定义对象。对于自定义对象,需要确保该对象实现了Serializable或Parcelable接口,因为Bundle只能存储这两个接口的对象。 值得...
除了直接通过Intent传递数据,还可以将数据封装到Bundle中,然后在需要的地方解封。 6. **startActivityForResult()**: 当需要从目标Activity返回数据时,可以使用startActivityForResult()。在目标Activity完成时...
首先,Activity间的通信是Android应用设计的重要部分,这涉及到启动一个新Activity、在Intent中携带数据以及使用Bundle来保存和恢复数据。Intent是Android系统中启动组件(如Activity)的载体,而Bundle则可以看作...
- **Bundle**:可以使用Bundle对象存储数据,然后在Intent中传递,适用于多类型数据的组合。 - **静态成员变量**:虽然不推荐,但在某些特定情况下,可以使用Activity的静态成员变量进行数据共享。 - **...
在Android中,Activity之间的对象传递主要依赖于Intent、Parcelable接口、Serializable接口以及Bundle。Parcelable接口提供高效的数据传输,适用于频繁的数据交换;Serializable接口使用简单,但效率较低;而Bundle...
除了基本类型,Intent还可以传递更复杂的数据类型,如Parcelable(自定义对象)、Serializable等。不过,需要注意的是,数据传递在Activity之间并不是持久化的,当应用被关闭后,这些数据会丢失。 接下来,我们谈谈...
在Fragment中定义你需要接收的数据类型以及相关的setter方法,以便Activity能够传递数据。 3. **创建PagerAdapter** 创建一个继承自FragmentPagerAdapter的自定义类,重写`getCount()`方法来返回Fragment的数量,...
在Android应用开发中,`Bundle`是一个至关重要的...在本示例中,我们学习了如何创建`Bundle`,如何通过`Intent`传递,以及在目标Activity中如何接收和解包数据。这些基础知识将为你的Android开发生涯奠定坚实的基础。
在Intent中,你可以通过`putExtras(Bundle bundle)`方法传递一个包含多个数据的Bundle。 ```java // 创建一个Bundle Bundle bundle = new Bundle(); bundle.putString("key1", "value1"); bundle.putInt("key2", ...
在实际开发中,你可能需要根据具体需求调整透明度、处理数据类型以及考虑数据安全等问题。这个DK压缩包文件可能包含了实现这些功能的示例代码,通过学习和分析这些代码,你将更深入地理解如何在Android应用中实践...
在每个Activity之间,可以通过Intent传递特定的数据,比如从姓名Activity跳转到年龄Activity时,将姓名作为数据传递,然后在年龄Activity中显示。 总结,Android Activity之间的信息传递是通过Intent及其附带的...
- 使用`startActivityForResult(Intent intent, int requestCode)`时,可以在目标Activity通过`setResult()`返回结果,然后在源Activity中通过`onActivityResult()`接收。 理解并熟练运用Intent在Android开发中至...