ArrayList使用Bundle传递null

时间:2016-09-02 04:30:19

标签: java android arraylist

目前我有一个我想要传递给另一个活动的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{}

2 个答案:

答案 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");