`

Activity之间传递一个类对象或多个类对象的方法

阅读更多
可以查看这两篇文章:
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的应用中,可能需要在不同的Activity之间共享数据,这些数据可能是简单的基本类型,如字符串、整数,也可能是复杂的自定义对象。Android的Intent...

    Activity传递类对象源码

    Activity间要传递数据,很多时候简单的int和string满足不了需求,我们在面向对象中已经习惯了类和对象, 那么下面就说一下如何传递类对象。 Android中有两种办法来完成这件事。一个是Java的序列化(Serializable)...

    Android Activity间传递自定义类的对象

    以上就是如何在Android的Activity之间传递自定义类对象的方法。在实际开发中,根据项目需求和性能考虑,可以选择适合的方式。如果对象比较复杂,建议使用Parcelable;如果简单,且对性能要求不高,可以使用...

    Activity间图片传递(3种方法)

    当涉及到图片这种大对象时,我们需要采取一些特殊的方法来高效地进行传递。本文将详细介绍三种在Activity间传递图片的方法。 1. 资源ID间传递 这种方法适用于图片已经存在于项目资源文件夹中的情况。我们可以通过...

    activity与activity利用接口相互传递数据

    这个接口通常包含一个或多个方法,这些方法用于接收并处理来自目标Activity(接收者)的数据。接口定义如下: ```java public interface DataCallback { void onDataReceived(Object data); } ``` 然后,在源...

    Android-Activity之间数据传递的多种方式

    如果数据需要在多个Activity间持久保存,可以考虑使用静态成员变量或单例模式。这种方式简单直接,但需要注意线程安全和内存泄漏问题。 四、文件存储和ContentProvider 对于大容量或需要跨应用共享的数据,可以...

    使用ViewModel解决多个Activity数据共享问题(Kotlin版)

    在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。`ViewModel`是Android架构组件之一,它为了解决这个问题提供了优雅的解决方案。本文将深入探讨...

    Android 两个Activity之间传值

    4. **使用Bundle**:另一种方式是通过Intent的`putExtras()`或`putBundle()`方法,将一个Bundle对象放入Intent中。Bundle类似于一个小型的键值存储,可以容纳各种类型的数据: ```java Bundle bundle = new Bundle()...

    Android Activity之间的跳转以及数据的交互传递

    Intent是一个包含消息的对象,可以用来启动一个Activity或服务,或者传递数据。创建Intent时,你需要指定目标Activity的类名,并通过setComponent()方法设置,或者通过setAction()和setCategory()来指定一个动作和...

    多个Activity之间的交互(后一个传回前一个)

    本篇文章将深入探讨如何在Android中实现后一个Activity向前一个Activity传递数据并进行交互。 首先,我们创建两个Activity:ActivityA(aActivity)和ActivityB。ActivityA是主界面,用户在该界面操作后启动...

    安卓activity之间简单信息传递

    在两个Activity之间传递信息,我们通常会创建一个Intent对象,然后将数据附加到Intent上,最后通过startActivity()方法启动目标Activity。 1. 使用putExtra()方法传递基本数据类型: ```java Intent intent = new ...

    Fragment与Activity使用Bundle传递数据

    Activity是Android应用中的顶层窗口,它可以包含一个或多个Fragment。Fragment则是一个可重用的UI部分,有自己的生命周期,可以独立于Activity进行操作。当需要在Activity和Fragment之间传递数据时,通常涉及到四个...

    基于观察者模式两个activity通信

    例如,我们可以创建一个`Observable`类作为被观察者,包含`addObserver()`、`removeObserver()`和`notifyObservers()`等方法。同时,创建一个`Observer`接口,定义一个`onUpdate()`方法,用于接收来自被观察者的更新...

    android Activity之间的数据传递

    总的来说,Android Activity之间的数据传递是一个广泛而重要的主题,涉及多种方式和策略。开发者应根据具体需求选择合适的方法,确保数据安全、高效地在Activity间流动。在实际开发中,理解并熟练掌握这些技术将有助...

    3.5 Activity和Intent(多个Activity之间的跳转)

    在Activity之间传递数据时,也可以回传数据,例如,在第二个Activity中可以使用setResult()方法来设置结果,然后使用finish()方法来结束当前Activity,最后在第一个Activity中可以使用onActivityResult()方法来获取...

    android之间传递对象的两种方式

    本资源提供了关于Android中Activity间传递对象的两种常见方法,即Parcelable和Serializable。了解并掌握这些方法对于Android开发者来说至关重要,能够帮助你更有效地在不同组件之间传递数据。通过实践和理解这两个...

    Android例子源码Activity间的数据传递

    在Activity间传递数据时,我们通常创建一个Intent对象,然后通过putExtra()方法添加数据,最后用startActivity()或startActivityForResult()启动目标Activity。 2. **基本类型数据传递**: Android允许我们将基本...

    安卓开发-Activity间数据传递和回传

    在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...

    Android应用:Intent打开另外一个Activity,Intent拨电话,Intent在2个Activity间传递参数

    `startActivity()`方法会启动目标Activity,并且如果当前Activity在栈顶,那么它会被暂停或停止。 接下来,我们来看看如何使用Intent拨打电话。Android提供了`ACTION_DIAL`和`ACTION_CALL`两种Intent类型来拨打电话...

    一个activity中多个handler和消息的处理过程

    首先,Handler是Android中的一个关键组件,它允许我们通过Message对象在不同的线程之间传递数据和执行任务。通常,我们在主线程(UI线程)中创建一个Handler实例,用于接收由其他工作线程发送的消息,并在适当的时间...

Global site tag (gtag.js) - Google Analytics