Android 不同Activity间数据的传递 Bundle对象的应用

在应用中,可能会在当跳转到另外一个Activity的时候需要传递数据过去,这时就可能用Bundle对象;

在MainActivity中,有一个导航至BActivity的Intent,

Intent
复制代码 代码如下:
{

  Intent intent = new Intent(Context context, Class<?> class);
  //new一个Bundle对象,并将要传递的数据导入,Bunde相当于Map<Key,Value>结构   
  Bundle bundle = new Bundle();
  bundle.putString("name","Livingstone");
  bundle.putXXX(XXXKey, XXXValue);
  //将Bundle对象添加给Intent
  intent.putExtras(bundle);
  //调用intent对应的Activity
  startActivity(intent);

}

在BActivity中,通过以下代码获取MainActivity所传过来的数据

  Bundle bundle = this.getIntent().getExtras();// 获取传递过来的封装了数据的Bundle
  String name = bundle.getString("name");// 获取name_Key对应的Value
  // 获取值时,添加进去的是什么类型的获取什么类型的值

--> bundle.getXXX(XXXKey);

       return XXXValue

上面讲述的都是一般的基本数据类型,当需要传递对象的时候,可以使该对象实现Parcelable或者是Serializable接口;

通过Bundle.putParcelable(Key,Obj)及Bundle.putSerializable(Key,Obj)方法将对象添加到Bundle中,再将此Bundle对象添加到Intent中!

在跳转的目标页面通过Intent.getParcelableExtra(Key)获取实现了Parcelable的对象;

在跳转的目标页面通过Intent.getSerializableExtra(Key)获取实现了Serializable的对象;

今天在研究的时候发现,Intent.putExtra(Key,Value);其实也可以传递数据,包括上面所讲的对象!

实现Serializable接口很简单,不再描述;

下面描述实现Parcelable接口:
复制代码 代码如下:
public class Book implements Parcelable {
 private String bookName;
 private String author;

public static final Parcelable.Creator CREATOR = new Creator() {// 此处必须定义一个CREATOR成员变量,要不然会报错!

@Override
  public Book createFromParcel(Parcel source) {// 从Parcel中获取数据,在获取数据的时候需要通过此方法获取对象实例
   Book book = new Book();
   book.setAuthor(source.readString());// 从Parcel读取数据,读取数据与写入数据的顺序一致!
   book.setBookName(source.readString());
   return book;
  }

@Override
  public Book[] newArray(int size) {
   return new Book[size];
  }
 };

@Override
 public int describeContents() {
  return 0;
 }

@Override// 写入Parcel
 public void writeToParcel(Parcel dest, int flags) {
  dest.writeString(author);// 将数据写入Parcel,写入数据与读取数据的顺序一样!
  dest.writeString(bookName);
 }
}

关于Parcel,大概查阅了一下描述:

一个final类,用于写或读各种数据,所有的方法不过就是writeValue(Object)和read(ClassLoader)!(个人翻译理解)

时间: 2024-10-23 16:01:22

Android 不同Activity间数据的传递 Bundle对象的应用的相关文章

Android 不同Activity间数据的传递 Bundle对象的应用_Android

在应用中,可能会在当跳转到另外一个Activity的时候需要传递数据过去,这时就可能用Bundle对象: 在MainActivity中,有一个导航至BActivity的Intent, Intent 复制代码 代码如下: { Intent intent = new Intent(Context context, Class<?> class); //new一个Bundle对象,并将要传递的数据导入,Bunde相当于Map<Key,Value>结构    Bundle bundle =

activity-Android Activity间bitmap的传递

问题描述 Android Activity间bitmap的传递 在Activity间怎样优雅的传递比较大的bitmap?问题背景是一个Activity将图传至另一个Activity,对图进行处理后传回显示. 解决方案 [android-tips]Activity间数据传递之Bundle和SharedPreferencesActivity间通过Intent传递Bitmap对象Android Activity间传递自定义类的对象 解决方案二: 1.将Activity1中的bitmap保存到文件中,将

android技巧:Activity间数据传递之Bundle和SharedPreferences

1.介绍 对于初学者android不同activity间的数据传输一直是一个难题,主要的解决方法主要有两种一种是用Bundle传输数据,一种是用SharedPreferences.两者的区别,一般来讲SharedPreferences用来存储轻型数据,保存在xml里,可以持久保存.反观Bundle可以传输很多中数据,但是不持久. 2.具体实现方法  Bundle 在发送方class A Bundle bundle = new Bundle(); //保存输入的信息 bundle.putStrin

【android-tips】Activity间数据传递之Bundle和SharedPreferences

(转载请注明出处:http://blog.csdn.net/buptgshengod)  1.介绍    对于初学者android不同activity间的数据传输一直是一个难题,主要的解决方法主要有两种一种是用Bundle传输数据,一种是用SharedPreferences.两者的区别,一般来讲SharedPreferences用来存储轻型数据,保存在xml里,可以持久保存.反观Bundle可以传输很多中数据,但是不持久. 2.具体实现方法   Bundle    在发送方class A Bun

ui-UI中Intent要在跳转过程中传递bundle对象,为什么要实现Serializable?

问题描述 UI中Intent要在跳转过程中传递bundle对象,为什么要实现Serializable? Intent要在跳转过程中传递bundle对象,为什么要实现Serializable? 解决方案 ....看情况啊,如果只是普通的bundle对象是不需要实现Serializable的,当bundle中要传递的是一个对象时才要实现该接口.实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复.

Android中Activity的生命周期探讨_Android

1.完整生命周期 上图是Android Activity的生命周期图,其中Resumed.Paused.Stopped状态是静态的,这三个状态下的Activity存在时间较长. (1)Resumed:在此状态时,用户可以与Activity进行交互,Activity在最前端 (2)Paused:在此状态时,Activity被另外一个Activity遮盖,此Activity不可接受用户输入信息.另外一个Activity来到最前面,半透明的,但并不会覆盖整个屏幕. (3)Stopped:在此状态时,A

Android中Activity的生命周期探讨

1.完整生命周期 上图是Android Activity的生命周期图,其中Resumed.Paused.Stopped状态是静态的,这三个状态下的Activity存在时间较长. (1)Resumed:在此状态时,用户可以与Activity进行交互,Activity在最前端 (2)Paused:在此状态时,Activity被另外一个Activity遮盖,此Activity不可接受用户输入信息.另外一个Activity来到最前面,半透明的,但并不会覆盖整个屏幕. (3)Stopped:在此状态时,A

事件-android surfaceview 和activity之间数据传递

问题描述 android surfaceview 和activity之间数据传递 想实现一个功能 就是在mainActivity中放置一个surfaceview和一个Textview 在surfaceview中添加点击onTouch事件 每次点击 让自己定义的surfaceview的变量 step加一 并时时在mainActivity的TextView中更新step的显示 不知道问题有没有描述清楚 就是想在一个view中时时显示另外一个view中定义的变量 解决方案 public class M

Android基于Intent实现Activity之间数据传递的方法_Android

本文实例讲述了Android基于Intent实现Activity之间数据传递的方法.分享给大家供大家参考,具体如下: MainActivity: package com.test.intentdemo; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import andro