可以查看这两篇文章:
1,通过Serializable传递一个类对象的例子
http://mingkg21.iteye.com/blog/438913
2,通过Parcelable传递一个类对象的例子
http://mingkg21.iteye.com/blog/463895
而若需要传递多个类对象的时候就必须用Parcelable来封装类,然后将其存放在ArrayList,
我从网上下载的一个例子该成这种情况的:可以看其代码:
对象:
package cn.wizhy;
import android.os.Parcel;
import android.os.Parcelable;
public class Phone implements Parcelable{
String type;
String company;
int price;
public Phone(String t,String c,int p) {
type=t;
company=c;
price=p;
}
public Phone() {
// TODO Auto-generated constructor stub
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public static final Parcelable.Creator<Phone> CREATOR = new Creator<Phone>(){
@Override
public Phone createFromParcel(Parcel source) {
// TODO Auto-generated method stub
Phone cus = new Phone();
cus.type = source.readString();
cus.company = source.readString();
cus.price = source.readInt();
return cus;
}
@Override
public Phone[] newArray(int size) {
// TODO Auto-generated method stub
return new Phone[size];
}
};
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(type);
dest.writeString(company);
dest.writeInt(price);
}
}
第一个Activity,构造类将其存放到Arraylist里,并通过Intent传给第二个Activity
package cn.wizhy;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class Demo extends Activity {
ArrayList<Phone> info = new ArrayList<Phone>();
public Phone phone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
insertPhone();
Intent intent = new Intent(this,Demo2.class);
// Bundle bundle = new Bundle();
// bundle.putSerializable("phone", phone);
// intent.putExtras(bundle);
phone = new Phone("goole","G1",6000);
info.add(phone);
phone = new Phone("apple", "iphone3G", 5000);
info.add(phone);
intent.putExtra("phones", info);
startActivity(intent);
}
public void insertPhone(){
phone= new Phone("apple", "iphone3G", 5000);
}
}
第二个Activity接受数据:
package cn.wizhy;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class Demo2 extends Activity {
ArrayList<Phone> info = new ArrayList<Phone>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
info =intent.getParcelableArrayListExtra("phones");
for(int i=0;i<info.size();i++){
System.out.println("type="+info.get(i).type+" company="+info.get(i).company+" price"+info.get(i).price);
}
}
}
分享到:
相关推荐
首先,我们来理解为什么需要在Activity之间传递对象。在多Activity的应用中,可能需要在不同的Activity之间共享数据,这些数据可能是简单的基本类型,如字符串、整数,也可能是复杂的自定义对象。Android的Intent...
Activity间要传递数据,很多时候简单的int和string满足不了需求,我们在面向对象中已经习惯了类和对象, 那么下面就说一下如何传递类对象。 Android中有两种办法来完成这件事。一个是Java的序列化(Serializable)...
以上就是如何在Android的Activity之间传递自定义类对象的方法。在实际开发中,根据项目需求和性能考虑,可以选择适合的方式。如果对象比较复杂,建议使用Parcelable;如果简单,且对性能要求不高,可以使用...
当涉及到图片这种大对象时,我们需要采取一些特殊的方法来高效地进行传递。本文将详细介绍三种在Activity间传递图片的方法。 1. 资源ID间传递 这种方法适用于图片已经存在于项目资源文件夹中的情况。我们可以通过...
这个接口通常包含一个或多个方法,这些方法用于接收并处理来自目标Activity(接收者)的数据。接口定义如下: ```java public interface DataCallback { void onDataReceived(Object data); } ``` 然后,在源...
如果数据需要在多个Activity间持久保存,可以考虑使用静态成员变量或单例模式。这种方式简单直接,但需要注意线程安全和内存泄漏问题。 四、文件存储和ContentProvider 对于大容量或需要跨应用共享的数据,可以...
在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。`ViewModel`是Android架构组件之一,它为了解决这个问题提供了优雅的解决方案。本文将深入探讨...
4. **使用Bundle**:另一种方式是通过Intent的`putExtras()`或`putBundle()`方法,将一个Bundle对象放入Intent中。Bundle类似于一个小型的键值存储,可以容纳各种类型的数据: ```java Bundle bundle = new Bundle()...
Intent是一个包含消息的对象,可以用来启动一个Activity或服务,或者传递数据。创建Intent时,你需要指定目标Activity的类名,并通过setComponent()方法设置,或者通过setAction()和setCategory()来指定一个动作和...
本篇文章将深入探讨如何在Android中实现后一个Activity向前一个Activity传递数据并进行交互。 首先,我们创建两个Activity:ActivityA(aActivity)和ActivityB。ActivityA是主界面,用户在该界面操作后启动...
在两个Activity之间传递信息,我们通常会创建一个Intent对象,然后将数据附加到Intent上,最后通过startActivity()方法启动目标Activity。 1. 使用putExtra()方法传递基本数据类型: ```java Intent intent = new ...
Activity是Android应用中的顶层窗口,它可以包含一个或多个Fragment。Fragment则是一个可重用的UI部分,有自己的生命周期,可以独立于Activity进行操作。当需要在Activity和Fragment之间传递数据时,通常涉及到四个...
例如,我们可以创建一个`Observable`类作为被观察者,包含`addObserver()`、`removeObserver()`和`notifyObservers()`等方法。同时,创建一个`Observer`接口,定义一个`onUpdate()`方法,用于接收来自被观察者的更新...
总的来说,Android Activity之间的数据传递是一个广泛而重要的主题,涉及多种方式和策略。开发者应根据具体需求选择合适的方法,确保数据安全、高效地在Activity间流动。在实际开发中,理解并熟练掌握这些技术将有助...
在Activity之间传递数据时,也可以回传数据,例如,在第二个Activity中可以使用setResult()方法来设置结果,然后使用finish()方法来结束当前Activity,最后在第一个Activity中可以使用onActivityResult()方法来获取...
本资源提供了关于Android中Activity间传递对象的两种常见方法,即Parcelable和Serializable。了解并掌握这些方法对于Android开发者来说至关重要,能够帮助你更有效地在不同组件之间传递数据。通过实践和理解这两个...
在Activity间传递数据时,我们通常创建一个Intent对象,然后通过putExtra()方法添加数据,最后用startActivity()或startActivityForResult()启动目标Activity。 2. **基本类型数据传递**: Android允许我们将基本...
在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...
`startActivity()`方法会启动目标Activity,并且如果当前Activity在栈顶,那么它会被暂停或停止。 接下来,我们来看看如何使用Intent拨打电话。Android提供了`ACTION_DIAL`和`ACTION_CALL`两种Intent类型来拨打电话...
首先,Handler是Android中的一个关键组件,它允许我们通过Message对象在不同的线程之间传递数据和执行任务。通常,我们在主线程(UI线程)中创建一个Handler实例,用于接收由其他工作线程发送的消息,并在适当的时间...