android活动识别包裹协议需要一个Parcelable.Creator
我在活动识别方面遇到问题,出现以下错误:android活动识别包裹协议需要一个Parcelable.Creator,android,google-play-services,parcelable,intentservice,activity-recognition,Android,Google Play Services,Parcelable,Intentservice,Activity Recognition,我在活动识别方面遇到问题,出现以下错误: 05-07 22:32:03.553: E/AndroidRuntime(5546): FATAL EXCEPTION: IntentService[dk.finne.minrute.service.ActivityRecognitionIntentService] 05-07 22:32:03.553: E/AndroidRuntime(5546): Process: dk.finne.minrute, PID: 5546 05-07 22:32:03
05-07 22:32:03.553: E/AndroidRuntime(5546): FATAL EXCEPTION: IntentService[dk.finne.minrute.service.ActivityRecognitionIntentService]
05-07 22:32:03.553: E/AndroidRuntime(5546): Process: dk.finne.minrute, PID: 5546
05-07 22:32:03.553: E/AndroidRuntime(5546): android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.google.android.gms.location.ActivityRecognitionResult
05-07 22:32:03.553: E/AndroidRuntime(5546): at android.os.Parcel.readParcelableCreator(Parcel.java:2156)
ActivityRecognitionResult
类来自Google Play Services,因此如何修复此错误?这是一个有效的示例,除了传递活动(仍然没有解决这个问题)。基本上你没有创造者的东西。下一次,如果您包含一个代码示例,它会有所帮助
import android.app.Activity;
import android.os.Parcel;
import android.os.Parcelable;
public class QueryParcible implements Parcelable{
private long fromBtn,toBtn;
private Boolean gpsB, picB;
Activity activity;
public QueryParcible() {}
public QueryParcible(Parcel parcel) {}
public static final Parcelable.Creator<QueryParcible> CREATOR =
new Parcelable.Creator<QueryParcible>(){
@Override
public QueryParcible createFromParcel(Parcel source) {
return new QueryParcible(source);
}
@Override
public QueryParcible[] newArray(int size) {
return new QueryParcible[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeSerializable(fromBtn);
dest.writeSerializable(toBtn);
dest.writeInt(gpsB?1:0);
dest.writeInt(picB?1:0);
dest.writeValue(activity);
}
public void readFromParcel(Parcel source){
fromBtn= source.readLong();
toBtn= source.readLong();
gpsB=source.readInt()==1;
picB=source.readInt()==1;
// activity=source.readValue(activity);
}
public Boolean getGpsB() {
return gpsB;
}
public void setGpsB(Boolean gpsB) {
this.gpsB = gpsB;
}
public Boolean getPicB() {
return picB;
}
public void setPicB(Boolean picB) {
this.picB = picB;
}
public long getFromBtn() {
return fromBtn;
}
public void setFromBtn(long fromBtn) {
this.fromBtn = fromBtn;
}
public long getToBtn() {
return toBtn;
}
public void setToBtn(long toBtn) {
this.toBtn = toBtn;
}
public Activity getActivity() {
return activity;
}
public void setActivity(Activity activity) {
this.activity = activity;
} }
导入android.app.Activity;
导入android.os.packet;
导入android.os.Parcelable;
公共类QueryParable实现了Parcelable{
私人长途电话(BTN、toBtn);
私有布尔gpsB,picB;
活动;
公共QueryParcible(){}
公共查询包(包){}
公共静态最终包裹。创建者=
新建Parcelable.Creator(){
@凌驾
公共QueryParcible createFromParcel(地块源){
返回新的QueryParcible(源);
}
@凌驾
公共QueryParcible[]新数组(整数大小){
返回新的QueryParcible[大小];
}
};
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地可写变量(fromBtn);
目的地可写变量(toBtn);
目的地记录(gpsB?1:0);
目标写入(picB?1:0);
目的书面价值(活动);
}
公共作废readFromParcel(地块源){
fromBtn=source.readLong();
toBtn=source.readLong();
gpsB=source.readInt()==1;
picB=source.readInt()==1;
//activity=source.readValue(activity);
}
公共布尔getGpsB(){
返回gpsB;
}
公共无效集合gpsB(布尔gpsB){
this.gpsB=gpsB;
}
公共布尔getPicB(){
返回picB;
}
公共无效设置picB(布尔值picB){
this.picB=picB;
}
公共长getFromBtn(){
从BTN返回;
}
公共无效集合fromBtn(长fromBtn){
this.fromBtn=fromBtn;
}
公共长廊{
返回toBtn;
}
公共空间设置toBtn(长toBtn){
this.toBtn=toBtn;
}
公共活动{
返回活动;
}
公共活动(活动){
这个。活动=活动;
} }
也许您使用proguard时遇到了与此处相同的问题:是的,您是对的。谢谢