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

所属分类: 软件编程 / Android 阅读数: 590
收藏 0 赞 0 分享

在应用中,可能会在当跳转到另外一个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)!(个人翻译理解)

更多精彩内容其他人还在看

android byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多