intent传递对象,实现parceable或者serializable,及回传值

intent是android四大组件交互的桥梁;

一个界面跳到另一个界面可以向其传递信息参数,eg:数据基本类型,数组,集合,bundle、对象。。

如果传递对象需要实现parceable接口或者serializable接口,实现parcelable效率比serializable高,

但是后者实现更简单,更利于持久化存储

package com.bdyl.constance;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * 围栏信息的类
 * 
 * @author Administrator
 * 
 */
public class Circle implements Parcelable {
	private String id;// 围栏id
	private String device_id;// 设备的ID
	private String circle_name;// 围栏的名字
	private double circle_size;// 围栏的范围
	private double lng;// 围栏中心位置的经度
	private double lat;// 围栏中心位置的纬度
	private String type;//围栏类型 0:safe 1:danger
	private String select;//0:选中显示  1:不启用
	private String position;//
	
	public String getPosition() {
		return position;
	}

	public void setPosition(String position) {
		this.position = position;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}
	public String getSelect() {
		return select;
	}
	
	public void setSelect(String select) {
		this.select = select;
	}

	public String getCircle_name() {
		return circle_name;
	}

	public void setCircle_name(String circle_name) {
		this.circle_name = circle_name;
	}
	public String getDevice_id() {
		return device_id;
	}

	public void setDevice_id(String device_id) {
		this.device_id = device_id;
	}

	public double getCircle_size() {
		return circle_size;
	}

	public void setCircle_size(double circle_size) {
		this.circle_size = circle_size;
	}

	public double getLng() {
		return lng;
	}

	public void setLng(double lng) {
		this.lng = lng;
	}

	public double getLat() {
		return lat;
	}

	public void setLat(double lat) {
		this.lat = lat;
	}

	@Override
	public int describeContents() {
		return 0;
	}

	/*
	写入
	*/
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		dest.writeString(id);
		dest.writeString(circle_name);
		dest.writeDouble(circle_size);
		dest.writeDouble(lng);
		dest.writeDouble(lat);
		dest.writeString(device_id);
		dest.writeString(type);
		dest.writeString(select);
	}
	//固定格式,需要声明为public static final ,对象名也必须是大写的 CREATOR
	public static final Parcelable.Creator<Circle> CREATOR = new Parcelable.Creator<Circle>() {

	/*
	读出
	*/
		@Override
		public Circle createFromParcel(Parcel source) {
			Circle circle = new Circle();
			circle.setId(source.readString());
			circle.setCircle_name(source.readString());
			circle.setCircle_size(source.readDouble());
			circle.setLng(source.readDouble());
			circle.setLat(source.readDouble());
			circle.setDevice_id(source.readString());
			circle.setType(source.readString());
			circle.setSelect(source.readString());
			return circle;
		}

		@Override
		public Circle[] newArray(int size) {
			return new Circle[size];
		}
	};

	@Override
	public String toString() {
		return "Circle [id=" + id + ", device_id=" + device_id
				+ ", circle_name=" + circle_name + ", circle_size="
				+ circle_size + ", lng=" + lng + ", lat=" + lat + ", type="
				+ type + ", select=" + select + "]";
	}
	
	
	

}

关于回传值:

tip:activity 的启动模式不能为单任务singletask和单实例,值回传不过去

activity1:

1.调用 startActivityForResult(iintent,requestcode);

2.重写activity 的 onActivityForResult方法,

activity2:

getIntent().getEtras("key")..得到传入的数据,

通过setResult(intent,resultCode); 将要回传的数据通过intent

补充:

在fragment中的onActivityResult中处理回传值,在activity中的此方法中调用 fragment.onActivityReusult()方法




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值