我在这个代码上得到错误
listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
这是我传递intent
的方式 Intent intent = new Intent(mcontext,SingleObjectActivity.class);
intent.putParcelableArrayListExtra("Object_list", personArrayList);
// intent.putExtra("Object_list", personArrayList);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mcontext.startActivity(intent);
这是第二个活动
public class SingleObjectActivity extends Activity
{
public static final String OBJECT_LIST = "Object_list";
private ArrayList<Listitem> Objects;
public ImageView imgview;
private Listitem listObjects;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.singleobject);
// ArrayList<Listitem> items = getIntent().getParcelableArrayListExtra("Object_list");
Bundle extras = getIntent().getExtras();
imgview = (ImageView) findViewById(R.id.funnyimage);
/* if (extras != null) {
Objects = extras.getParcelableArrayList(OBJECT_LIST);
} else {
Objects = new ArrayList<Listitem>();
}
*/
if (extras.containsKey(OBJECT_LIST)) {
this.listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
// this.listObjects = extras.getParcelable(ARG_PERSON_LIST);
} else {
this.listObjects = null;
}
if (this.listObjects != null) {
Picasso.
with(getApplicationContext()).
load(this.listObjects.getUrl())
//load()
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(imgview);
}
}
}
这是一个列表
public class Listitem implements Parcelable {
private int order;
private String id;
private String url;
private String userName;
private int likes;
//String name;
public Listitem(Parcel in){
this.id = in.readString();
this.url = in.readString();
// this.name = in.readString();
}
public Listitem(int order, String id, String url, String userName, int likes) {
this.id = id;
this.url = url;
this.userName = userName;
this.order = order;
this.likes = likes;
}
@Override
public int describeContents() {
return 0;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public int getLikes() {
return likes;
}
public void setLikes(int likes) {
this.likes = likes;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
// dest.writeString(this.name);
dest.writeString(this.url);
}
public static final Parcelable.Creator<Listitem> CREATOR = new Parcelable.Creator<Listitem>() {
public Listitem createFromParcel(Parcel in) {
return new Listitem(in);
}
public Listitem[] newArray(int size) {
return new Listitem[size];
}
};
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
传递了完整的数组列表,但只得到一个对象
例如,试着这样做:
发送@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(this,SecondActivity.class);
ArrayList<MyParcelable> testing = new ArrayList<MyParcelable>();
i.putParcelableArrayListExtra("extraextra", testing);
startActivity(i);
}
收到public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<MyParcelable> testing = this.getIntent().getParcelableArrayListExtra("extraextra");
}
}
//只有一个成员属性的简单类
public class MyParcelable implements Parcelable {
private int mData;
/* everything below here is for implementing Parcelable */
// 99.9% of the time you can just ignore this
@Override
public int describeContents() {
return 0;
}
// write your object's data to the passed-in Parcel
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
// example constructor that takes a Parcel and gives you an object populated with it's values
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
你放了一个数组列表
intent.putParcelableArrayListExtra("Object_list", personArrayList);
但是你只是想获取一个Parcelable:
this.listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
这些是不同的类型。如果你要保存一个数组列表那么你需要调用getParcelableArrayListExtra