`
jk138
  • 浏览: 153448 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

在Activity中通过Bundle传递自定义数据类型

阅读更多

在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());
 
分享到:
评论
1 楼 stoneyulu 2014-05-11  
很好,正需要要!用来在thread和activity之间传数据

相关推荐

    Bundle传递数据方式

    本篇文章将详细讲解Bundle的两种主要数据传递方式:传递简单数据和传递自定义数据。 一、传递简单数据 1. 基本类型数据传递:Bundle支持基本类型的赋值操作,如int、String、boolean等。例如,我们可以这样传递一...

    android bundle和activity之间交换数据

    Bundle是一个键值对的数据结构,它类似于Java中的HashMap,可以存储各种基本数据类型(如int、String、boolean等)以及复杂的对象(如Parcelable和Serializable)。Bundle在Android中主要用于保存Activity的状态,当...

    Activity传递数据到另一个Activity并显示

    在目标`Activity`中,我们可以通过`getIntent()`获取到传递过来的`Intent`,然后使用`getExtras()`或`getBundleExtra()`方法来取出数据。 ```java // 在TargetActivity的onCreate()方法中 Intent intent = ...

    Activity review activity之间的数据传递

    通过Intent,我们可以将基本数据类型(如字符串、整数等)、Parcelable对象、Serializable对象以及额外的数据捆绑到Intent中,然后在启动新Activity时传递这些数据。 1. 使用putExtra()和getExtra()方法:这是最...

    Activity之间传递数据

    "Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据类型、字符串、数组、集合以及自定义对象等。在Android中,Intent不仅用于启动新的Activity,还...

    Android用Bundle传递数据并返回结果

    当我们需要传递复杂的数据时,可以将数据封装到`Bundle`中,然后通过Intent将`Bundle`传递给目标Activity。 以下是使用`StartActivityForResult`和`Bundle`传递数据的基本步骤: 1. **创建Intent**:在源Activity...

    两个Activity之间传递参数的代码

    对于简单的数据类型(如字符串、整型、浮点型、布尔型等),我们可以在创建Intent时直接附加数据。 例如,在`LoginActivity.java`中,我们可能需要将登录的用户名和密码传递到`MainActivity.java`: ```java // ...

    Bundle--Android-Activity.rar_android_android activity

    3. 在目标Activity中提取数据:在目标Activity的`onCreate(Bundle savedInstanceState)`或`onNewIntent(Intent intent)`方法中,可以通过调用`getExtras()`来获取Intent中的Bundle,然后使用`get(String key)`或`...

    Fragment 与 Activity之间传递数据

    除了基本类型,我们还可以传递更复杂的数据类型,例如字符串、浮点数、布尔值,甚至自定义对象。对于自定义对象,需要确保该对象实现了Serializable或Parcelable接口,因为Bundle只能存储这两个接口的对象。 值得...

    Android例子源码Activity间的数据传递

    除了直接通过Intent传递数据,还可以将数据封装到Bundle中,然后在需要的地方解封。 6. **startActivityForResult()**: 当需要从目标Activity返回数据时,可以使用startActivityForResult()。在目标Activity完成时...

    安卓activity间的数据传递

    首先,Activity间的通信是Android应用设计的重要部分,这涉及到启动一个新Activity、在Intent中携带数据以及使用Bundle来保存和恢复数据。Intent是Android系统中启动组件(如Activity)的载体,而Bundle则可以看作...

    android Activity之间的数据传递

    - **Bundle**:可以使用Bundle对象存储数据,然后在Intent中传递,适用于多类型数据的组合。 - **静态成员变量**:虽然不推荐,但在某些特定情况下,可以使用Activity的静态成员变量进行数据共享。 - **...

    Activity之间传递对象的Demo

    在Android中,Activity之间的对象传递主要依赖于Intent、Parcelable接口、Serializable接口以及Bundle。Parcelable接口提供高效的数据传输,适用于频繁的数据交换;Serializable接口使用简单,但效率较低;而Bundle...

    Android Activity之间的跳转以及数据的交互传递

    除了基本类型,Intent还可以传递更复杂的数据类型,如Parcelable(自定义对象)、Serializable等。不过,需要注意的是,数据传递在Activity之间并不是持久化的,当应用被关闭后,这些数据会丢失。 接下来,我们谈谈...

    Android 从Activity中往ViewPager里的fragment传递数据

    在Fragment中定义你需要接收的数据类型以及相关的setter方法,以便Activity能够传递数据。 3. **创建PagerAdapter** 创建一个继承自FragmentPagerAdapter的自定义类,重写`getCount()`方法来返回Fragment的数量,...

    Android中Bundle的小例子

    在Android应用开发中,`Bundle`是一个至关重要的...在本示例中,我们学习了如何创建`Bundle`,如何通过`Intent`传递,以及在目标Activity中如何接收和解包数据。这些基础知识将为你的Android开发生涯奠定坚实的基础。

    Activity页面数据传递

    在Intent中,你可以通过`putExtras(Bundle bundle)`方法传递一个包含多个数据的Bundle。 ```java // 创建一个Bundle Bundle bundle = new Bundle(); bundle.putString("key1", "value1"); bundle.putInt("key2", ...

    Activity学习bundle传值窗口透明演示范例

    在实际开发中,你可能需要根据具体需求调整透明度、处理数据类型以及考虑数据安全等问题。这个DK压缩包文件可能包含了实现这些功能的示例代码,通过学习和分析这些代码,你将更深入地理解如何在Android应用中实践...

    安卓activity之间简单信息传递

    在每个Activity之间,可以通过Intent传递特定的数据,比如从姓名Activity跳转到年龄Activity时,将姓名作为数据传递,然后在年龄Activity中显示。 总结,Android Activity之间的信息传递是通过Intent及其附带的...

    Android通过Intent传递数据

    - 使用`startActivityForResult(Intent intent, int requestCode)`时,可以在目标Activity通过`setResult()`返回结果,然后在源Activity中通过`onActivityResult()`接收。 理解并熟练运用Intent在Android开发中至...

Global site tag (gtag.js) - Google Analytics