Java 不能在意图上增加额外的内容
我想在意向书上加一个额外的东西。对象的类是由我创建的,因此我将其设置为可包裹Java 不能在意图上增加额外的内容,java,android,parcelable,Java,Android,Parcelable,我想在意向书上加一个额外的东西。对象的类是由我创建的,因此我将其设置为可包裹 public class NavigationDataSet implements Parcelable { private ArrayList<Placemark> placemarks = new ArrayList<Placemark>(); private Placemark currentPlacemark; private Placemark routePl
public class NavigationDataSet implements Parcelable {
private ArrayList<Placemark> placemarks = new ArrayList<Placemark>();
private Placemark currentPlacemark;
private Placemark routePlacemark;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
// TODO Auto-generated method stub
out.writeList(placemarks);
out.writeValue(currentPlacemark);
out.writeValue(routePlacemark);
}
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
public static final Parcelable.Creator<NavigationDataSet> CREATOR = new Parcelable.Creator<NavigationDataSet>() {
public NavigationDataSet createFromParcel(Parcel in) {
return new NavigationDataSet(in);
}
public NavigationDataSet[] newArray(int size) {
return new NavigationDataSet[size];
}
};
// example constructor that takes a Parcel and gives you an object populated with it's values
private NavigationDataSet(Parcel in) {
in.readTypedList(placemarks, Placemark.CREATOR);
this.currentPlacemark = in.readParcelable((ClassLoader) Placemark.CREATOR);
this.routePlacemark = in.readParcelable(Placemark.class.getClassLoader());
}
}
变量ds在onCreate方法上执行的AsyncTask上初始化。
我在putExtra指令上得到了一个预编译错误:
无法对非静态字段ds进行静态引用
但这里并没有说它必须是一个静态变量
如果我把它改成静态,它会说:
类型Intent中的方法putExtra(String,boolean)无效
适用于参数(字符串、列表)
但我没有传递布尔值,它是一个包裹!!!那我该怎么办?我真的不明白它是怎么工作的。在你的例子中,ds不是一个静态变量,因此你不能在静态方法中引用它。要么将ds设为静态,要么将pass作为mapIntent函数的参数,要么将mapIntent函数设为非静态。
ArrayList pointsExtra=new ArrayList();
ArrayList<ParcelableObject> pointsExtra = new ArrayList<ParcelableObject>();
intent.putExtra("", pointsExtra);
intent.putExtra(“,pointsExtra”);
如果我将其设置为静态,正如我在文章中所说,它会告诉我“类型意图中的方法putExtra(String,boolean)不适用于参数(String,List)”,这是愚蠢的,因为我打算使用putExtra(String,Parcelable)
List
不等于Parcelable
NavigationDataSet
是,但列表不是。它不能将其视为putExtra(String,Parcelable[])或putExtra(String,List)?那么我应该如何传递它呢?ferguior,你试过我的其他建议吗?你试过将它转换成数组或列表并使用这些方法吗?这很有效!我以为我以前试过,但似乎没有。谢谢
public static Intent mapIntent(Context context){
Intent i = new Intent(context, mapsView.class);
i.putExtra("NavSet", ds);
return i;
}
ArrayList<ParcelableObject> pointsExtra = new ArrayList<ParcelableObject>();
intent.putExtra("", pointsExtra);