繁体   English   中英

不能额外的意图

[英]Cannot put extra on an intent

我试图把一个对象作为额外的意图。 对象的类是由我创建的,所以我把它作为Parcelable。

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

在Activity中,我声明了这个变量:

private List<NavigationDataSet> ds;

意图创造:

public static Intent mapIntent(Context context){
        Intent i = new Intent(context, mapsView.class);
        i.putExtra("NavSet", ds);
        return i;
}

变量ds在onCreate方法上执行的AsyncTask上初始化。 我在putExtra指令上得到了一个预编译错误:

无法对非静态字段ds进行静态引用

但是这里http://developer.android.com/reference/android/content/Intent.html并没有说它必须是一个静态变量。

如果我将其更改为静态,它会说:

方法中的putExtra(String,boolean)方法不适用于参数(String,List)

但是我没有传递一个布尔值,它是一个Parcelable! 那我该怎么办? 我真的不明白这种方式的运作方式。

ArrayList<ParcelableObject> pointsExtra = new ArrayList<ParcelableObject>();
intent.putExtra("", pointsExtra);

http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra%28java.lang.String

在您的情况下,ds不是静态变量,因此您无法在静态方法中引用它。 要么使ds为static,要将pass作为mapIntent函数的参数,要么使mapIntent函数不是静态的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM