目前我有一个我想要传递给另一个活动的ArrayList。我已经应用了getParcelableArrayList
,但它将null传递给另一个活动。我已经检查了数组是否为空,但事实并非如此。在我至少通过之前的当前活动中。
这是我的代码:
RecyclerViewOffline.java
Toast.makeText(context,"Clicked", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(view.getContext(),OfflineActivity.class);
Log.d("Contexts Test : ", fileContents.get(holder.getLayoutPosition()).getTitle());
Bundle bundle = new Bundle();
//bundle.putParcelableArrayList("link",fileContents);
bundle.putParcelableArrayList("ArrayList",fileContents);
bundle.putInt("position",holder.getLayoutPosition());
intent.putExtra("bundle",bundle);
view.getContext().startActivity(intent);
我的收到结束:
OfflineActivity.java
Bundle extras = getIntent().getBundleExtra("bundle");
if(extras != null) {
this.fileContents = extras.getParcelableArrayList("ArrayList");
layoutPosition = extras.getInt("position");
Log.d("Contexts Test Offline: ",""+ fileContents.get(layoutPosition).getTitle());
}
else{}
答案 0 :(得分:1)
我可以看到
你没有在Parcelable in and out方法和构造函数中添加arraylist。
这将解决您的问题。
答案 1 :(得分:0)
如果ArrayList<E>
类型为E
,您可以采用相同的方式传递Serializable
。
您可以调用Intent的putExtra (String name, Serializable value)
进行存储,并getSerializableExtra (String name)
进行检索。
示例:
Intent intent = new Intent(view.getContext(), OfflineActivity.class);
intent.putExtra("ArrayList", fileContents);
intent.putExtra("position",holder.getLayoutPosition());
view.getContext().startActivity(intent);
在另一项活动中:
Intent i = getIntent();
int position = i.getIntExtra("position",0);
ArrayList<String> myList = (ArrayList<String>) i.getSerializableExtra("ArrayList");