下列错误的原因是什么
Key Object_list expected Parcelable but value was a java.util.ArrayList. The default value <null> was returned.
这是完整代码
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);
Bundle extras = getIntent().getExtras();
imgview = (ImageView) findViewById(R.id.funnyimage);
if (extras.containsKey(OBJECT_LIST)) {
this.listObjects = extras.getParcelable(OBJECT_LIST);
} else {
this.listObjects = null;
}
if (listObjects != null) {
Picasso.
with(getApplicationContext()).
load(listObjects.getUrl())
//load()
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(imgview);
}
}
}
发送意图
ArrayList<Listitem> personArrayList = new ArrayList<>();
personArrayList.add(new Listitem(item.getOrder(), item.getId(), item.getUrl(), item.getUserName(), item.getLikes()));
Intent intent = new Intent(mcontext,SingleObjectActivity.class);
intent.putExtra("Object_list", personArrayList);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mcontext.startActivity(intent);
编辑4
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 = extras.getParcelable(OBJECT_LIST);
// this.listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
this.Objects= extras.getParcelableArrayList("Object_list");
} else {
this.Objects = null;
}
if (this.listObjects != null) {
Picasso.
with(getApplicationContext()).
load(this.listObjects.getUrt())
//load()
.placeholder(R.drawable.logo)
.fit()
.noFade()
.into(imgview);
}
}
发送ArrayList
时:
Intent intent = new Intent(context ,TargetActivity.class);
intent.putParcelableArrayListExtra("Object_list", personArrayList);
context.startActivity(intent);
当收到你的ArrayList
时:
ArrayList<ListItem> items = getIntent().getParcelableArrayListExtra("Object_list");
注意,这与getIntent().getExtras().getParcelableArrayList()
不同。目前,我认为你写错了
Bundle extras = geIntent().getExtras();
extras.getParcelableArrayList("Object_list");
同样,ListItem
,尽管实现了Parcelable
,并没有复制它的所有值。这可能不是导致问题的原因,但值得记住。
我认为你应该这样做:
intent.putParcelableArrayListExtra("Object_list", (ArrayList<? extends Parcelable>) personArrayList);
并进入预期的活动,如:
this.Objects= extras.getParcelableArrayList("Object_list");
确保Listitem类实现Parcelable
你可以试试:
从extras
得到ArrayList
this.listObjects = (Listitem) extras.getParcelable(OBJECT_LIST);
1。创建模型类,如listtitem Parcelable
2。第二步,
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("list",list);
intent.putExtras(bundle);
3。ArrayList = bundle.getParcelableArrayList("list");
发送意图码intent.putExtra("Object_list", personArrayList);
替换为此intent.putParcelableArrayListExtra("Object_list", personArrayList);
将解决问题