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()方法