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)!(个人翻译理解)
相关文章
Android实现Activity、Service与Broadcaster三大组件之间互相调用的方法详解
这篇文章主要介绍了Android实现Activity、Service与Broadcaster三大组件之间互相调用的方法,结合实例形式详细分析了Activity、Service与Broadcaster三大组件相互调用的原理,实现方法与相关注意事项,需要的朋友可以参考下2016-03-03Android开发Jetpack组件ViewModel使用讲解
这篇文章主要介绍了Android Jetpack架构组件 ViewModel详解,ViewModel类让数据可在发生屏幕旋转等配置更改后继续存在,ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据,感兴趣可以来学习一下2022-08-08Android实现移动小球和CircularReveal页面切换动画实例代码
这篇文章主要给大家介绍了关于利用Android如何实现移动的小球和CircularReveal页面切换动画的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-09-09Android Webview的postUrl与loadUrl加载页面实例
这篇文章主要介绍了Android Webview的postUrl与loadUrl加载页面实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-03-03
最新评论