刚刚接触android不久所以对intent中传递数据不是很来了解特此记录下来以备忘
同时也希望一次来帮助新手(至少我经历过应该可以说是老手了吧,呵呵。。。往脸上贴金了!)
另外我还对intent中传递参数还有一点小问题希望有人能为我解释一下疑惑
入正题:
需求:在多个activity之间传递对象集合
解决方案:
第一:我们可以定义一个继承application的这样的一个类这样我们就可以在整个应用中使用了 此方案可行!
第二:我们可以通过intent 来传递。
关于intent的知识回顾:
对intent 中传递参数的问题并不麻烦,我们知道intent中可以传递基本数据类的数据,可以传递String 可以传递 对象(但是对象必须实现序列化),另外intent也可以传递集合
但是对于集合有限制只能传递ArrayList,而且还必须是包装了泛型是Integer 或者String 这样形式的,但是根据我的需求intent 貌似满足不了,但是intent 中可以传递bundle在bundle 中我们可以看到能够传递一个实现了parcelable接口的对象集合
具体代码如下:
实体:
public class OBean implements Serializable,Parcelable {
private static final long serialVersionUID = 1L;
private String messageName;
private String xmlPath;
public OBean(){}
private OBean(Parcel parcel){
messageName = parcel.readString();
xmlPath = parcel.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(messageName);
dest.writeString(xmlPath);
}
public static final Parcelable.Creator<OBean> CREATOR = new Parcelable.Creator<OBean>() {
@Override
public OBean createFromParcel(Parcel source) {
return new OBean(source);
}
@Override
public OBean[] newArray(int size) {
return new OBean[size];
}
};
public String getMessageName() {
return messageName;
}
public void setMessageName(String messageName) {
this.messageName = messageName;
}
public String getXmlPath() {
return xmlPath;
}
public void setXmlPath(String xmlPath) {
this.xmlPath = xmlPath;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public int describeContents() {
return 0;
}
}
我们实现了parcelable接口 实现了序列化;可以看到Parcelable 帮我们为OBean赋值了
但是这个过程中我有一点不明白如下:
private OBean(Parcel parcel){
messageName = parcel.readString();
xmlPath = parcel.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(messageName);
dest.writeString(xmlPath);
}
这个过程的readString 和writeString 有没有顺序的限制?
我看了相关文档结果没有发现能够帮我理解此问题的有利根据,所以希望哪位大神能指点一下
如上所述完成了 这一个过程就基本上完成了传递对象集合的80%了
剩下的20%:
ArrayList<OBean> list = OMessageParser.getOMessageBean(context,"OMessage.xml");
Intent OMIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("OBeanList", list);
这样的话我们在
putParcelableArrayList 的时候只需要把 包装好的ArrayList<OBean> 写进去就好了
但是到这个地方我还是有疑问了。。为什么intent 只能传递ArrayList不能传递List或者其他的数据结构呢?
分享到:
相关推荐
前言 ...这就牵涉到一个问题:Intent 传递数据大小限制。 Intent到底能够携带多少数据呢? 使用Intent传送数据时,可能会出现异常 在Intent中传入一个Parcelable对象;例如传入一个bitmap对象。 代
在Android应用开发中,Intent是一种强大的工具,用于在不同的组件之间进行通信,如启动Activity、启动Service或在组件间传递数据。"Android Intent传递对象"这个主题主要关注如何利用Intent来传递自定义对象,以便在...
在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它被用来启动新的Activity或Service,同时还能在组件间传递数据。本篇文章将深入探讨如何利用Intent进行数据传递,并以Activity间的交互为例,详细阐述...
因为HashMap不保证顺序,所以如果需要在Intent中传递一个有序的Map,我们应选择实现LinkedHashMap。 `LinkedHashMap`的特性: 1. 保持插入顺序:默认情况下,LinkedHashMap会按照元素的插入顺序进行存储和遍历。 2....
4种最常用的Intent传递方式,这4种方式如下: 1、通过Intent传递数据 2、通过静态变量传递数据 3、通过剪切板传递数据 4、通过全局变量传递数据
在Android应用开发中,Intent是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,用于传递数据和启动意图。本DEMO主要讲解如何通过Intent传递对象和数组,这些都是Android开发中的基础知识,对于...
本篇文章将详细探讨如何通过Intent在Android中传递对象,主要分为两种方式:使用`Serializable`接口和`Parcelable`接口。 1. **Serializable接口** `Serializable`是Java提供的一个标准序列化接口,当一个类实现了...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间传递信息和启动操作。它扮演着应用程序内部通信的重要角色,特别是在活动(Activity)之间。"Android通过Intent传递数据"这一主题,涵盖了Intent的基本...
总之,当需要在Intent中传递复杂对象时,建议优先考虑Parcelable接口,尽管实现过程稍显繁琐,但其性能优势是显而易见的。而Serializable接口虽然简单,但在大数据量或高性能需求的场景下可能不是最佳选择。理解并...
总结,Intent在Android开发中扮演着核心角色,通过实现Parcelable接口,我们可以顺利地在Intent中传递对象和对象数组,实现不同组件之间的数据交互。在实际开发中,根据具体需求和性能要求选择合适的数据传递方式。
在Intent中传递和接收对象: ```java Intent intent = new Intent(context, TargetActivity.class); intent.putExtra("myObject", myObject); startActivity(intent); // 在TargetActivity中 MyObject ...
在这个场景中,我们将关注Intent如何与Bundle结合,用于在Activity之间传递复杂的数据。 首先,Intent是用来在Android系统中表示一个动作的意图,它包含了动作(ACTION)、数据(DATA)、类别(CATEGORY)等信息。...
本文实例讲述了android中intent传递list或者对象的方法。分享给大家供大家参考。具体实现方法如下: 方法一: 如果单纯的传递List<String> 或者List的话 就可以直接使用 代码如下: 代码如下:intent....
当我们需要在Intent中传递自定义对象时,Android提供了几种方式来实现这一功能,其中一种常用的方法是将自定义对象转换为Serializable接口的实现。以下我们将详细探讨如何通过Intent传递自定义对象以及涉及到的相关...
intent将数据从一个activity传递到另一个activity,intent如何从发送数据给另一个activity并接受传回来的值
以上就是使用Serializable接口在Intent中传递对象的基本操作和注意事项。在实际开发中,根据项目需求和性能要求,选择合适的对象传递方式是非常重要的。在提供的Android_project_Serializable项目中,你可以找到相关...
这个“7-3-2-GridView-事件-Intent-传递参数包括图片ID.rar”文件应该包含了一个示例项目,演示了如何在GridView中处理点击事件并使用Intent传递包括图片ID在内的参数。 首先,我们来看`GridView`的基本用法。...
- 过多的Intent传递可能导致性能问题,因此应尽量减少不必要的数据传递,优化Intent使用。 总之,Intent是Android开发中的核心概念之一,熟练掌握Intent的使用,对于构建高效、灵活的应用至关重要。理解并熟练运用...