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);