我是Android开发的新手。
我不明白为什么以下代码会给我一个stackoverflower错误
Intent intent = new Intent(view.getContext(), MakeCall.class);
SipParcelable sipp = new SipParcelable(_sip);
intent.putExtra("sip", (Parcelable) sipp);
startActivity(intent);
基本上,只要startActivity(intent)触发,我就会收到以下错误:
我可以通过使用putExtra()
函数注释第三行来消除错误。
我试图将我的_sip对象传递给另一个即将加载的屏幕上的MakeCall.class活动。我试着按照教程了解如何实现Parcelable类/对象。这是我的SipParcelable代码的样子:
import com.myproject.library.SipService;
import android.os.Parcel;
import android.os.Parcelable;
public class SipParcelable implements Parcelable{
public SipService mData;
/* everything below here is for implementing Parcelable */
// 99.9% of the time you can just ignore this
public int describeContents() {
return 0;
}
// write your object's data to the passed-in Parcel
public void writeToParcel(Parcel out, int flags) {
out.writeValue(mData);
}
public SipParcelable(SipService sip)
{
mData = sip;
}
// Parcelling part
public SipParcelable(Parcel in){
mData = (SipService) in.readValue(SipService.class.getClassLoader());
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public SipParcelable createFromParcel(Parcel in) {
return new SipParcelable(in);
}
public SipParcelable[] newArray(int size) {
return new SipParcelable[size];
}
};
}
我做错了什么?
答案 0 :(得分:1)
您的SipService类必须实现parcelabe并修改如何从/向pracel读取和写入SipService对象。
查看本教程可能会对您有所帮助
你也可以使用serialisable ......但是parcelable更快更好
注意:实现parcelable的对象的所有属性(如果属性是对象)也必须是可分区的。