`

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

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

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

    Android中传递对象

    方法一:将一个公共类作为对象传输中介,但安全性差,可能由于多个类的调用导致传输出错。 将变量写成公共静态型,在A Activiy设置Center.a=new Obiect() 在 B Activiy接收 Object b=Center.a,如: public class ...

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

    该资源包含了一个activity之间传递对象的两种方式,包含了注释文档,简单易懂!

    Android Activity之间的数据传递方法总结

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递方法。 1、通过 Intent 传递 我们在进行 Activity 跳转时,是要有 Intent,此时 ...

    Android基于Intent实现Activity之间数据传递的方法

    本文实例讲述了Android基于Intent实现Activity之间数据传递的方法。分享给大家供大家参考,具体如下: MainActivity: package com.test.intentdemo; import android.app.Activity; import android.content.Intent;...

    Android通过全局变量传递数据

    在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...

    Android利用Intent启动和关闭Activity

    Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法,并在该方法的参数中传递Intent对象,就可以实现不同Activity之间的切换和数据传递。 通过StartActivity方法传递intent对象来启动...

    android开发——简易计算器的设计报告.doc

    (2)多个Activity之间的跳转:通过Intent类实现屏幕之间的跳转(包括没有参数关系 和需要传递参数两种情况)。 (3)两个Activity之间进行数据交换:startActivity() 只有Intent一个参数;public void ...

    Android编程实现两个Activity之间共享数据及互相访问的方法

    一直在想如果两个Activity之间能够像C#或delphi中的Form一样,可以直接访问其成员(字符、数值、成员对象等),并能调用其公开的方法,那应该比用Intent来传递数据直接方便的多,于是偿试了如下办法,测试基本没有问题...

    Android编程实现全局获取Context及使用Intent传递对象的方法详解

    本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法。分享给大家供大家参考,具体如下: 一、全局获取 Context Android 开发中很多地方需要用到 Context,比如弹出 Toast、启动活动、发送广播...

    Android动态加载Activity原理详解

    加载一个Activity肯定不会像加载一般的类那样,因为activity作为系统的组件有自己的生命周期,有系统的很多回调控制,所以自定义一个DexClassLoader类加载器来加载插件中的Activity肯定是不可以的。 首先不得不了解...

    android开发之关闭所有的activity的方法

    当app中打开了多个activity的时候,由于进入的比较深,所以,很多app不得不让用户一步一步退回到第一个界面(MainActivity),在一步一步退回的时候,逐个释放。 今天写kotlin来实现,在任意位置,直接退出应用的方法...

    Android Activity的启动过程源码解析

    前言 Activity是Android中一个很重要的概念,堪称四大组件之首,...每个Activity也是一个对象,你知道这个对象是啥时候被创建的吗(也就是说它的构造方法是什么时候被调用的)?为什么onCreate是Activity的执行入口?所

    Android开发之Activity详解

     一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)

    在一个应用程序中通常由多个Activity构成,都会在Manifestxml中指定一个主的Activity,如下设置 当程序第一次运行时用户就会看这个Activity,这个Activity可以通过启动其他的Activity进行相关操作。当启动其他的...

    Google.Android.SDK开发范例大全

     3.10 不同Activity之间的数据传递——Bundle对象的实现   3.11 返回数据到前一个Activity——startActivityForResult方法   3.12 具有交互功能的对话框——AlertDialog窗口   3.13 置换文字颜色的机关...

    Android基础总结篇之三:Activity的task相关介绍

    task是一个具有栈结构的容器,可以放置多个Activity实例。启动一个应用,系统就会为之创建一个task,来放置根Activity;默认情况下,一个Activity启动另一个Activity时,两个Activity是放置在同一个task中的,后者被...

    android 面试2

    对于activity和service来说,它指定了请求的操作名称和待操作数据的URIIntent对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中的声明)并激活它。但如果一个...

Global site tag (gtag.js) - Google Analytics