0

我有几个List<String>变量要传递Splash给主要活动:

1)我在某处读到我可以将它们传递为ArrayList<String>from Splashto Main,并且它可以工作......即我只能接收第一个ArrayList<String>变量。在下面的捆绑包中,我无法收到第二个ArrayList<String>.(array_list2) 为什么?

2)如何ArrayList<LatLng>从一项活动传递到另一项活动

第一个活动:

Intent intent = new Intent(SplashActivity.this, MainActivity.class);
Bundle b=new Bundle();
b.putStringArrayList("array_list1",(ArrayList<String>)Names);     
b.putStringArrayList("array_list2",(ArrayList<String>)City);
b.putStringArrayList("array_list3",(ArrayList<String>)Country);
b.putStringArrayList("array_list4",(ArrayList<String>)Code);
b.putStringArrayList("array_list5",(ArrayList<LatLng>)coordinates); //ERROR in this line, type mismatch!
intent.putExtras(b);
startActivity(intent);

第二个活动:

Bundle b = getIntent().getExtras();
if (b != null) {
testList1 = b.getStringArrayList("array_list1");
testList2 = b.getStringArrayList("array_list2"); //THIS gives the same arraylist as testList1 and it is incorrect!
Log.e("TESTLIST1",testList1.toString()); //just using Log.e to view o/p as test
Log.e("TESTLIST2",testList1.toString());

请回答我的两个问题。其他主题都没有帮助我,我花了两个多小时在这上面。谢谢你。

4

2 回答 2

2

putStringArrayList() 将不支持 ArrayList 。

利用

 putParcelableArrayList();

代替

 putStingArrayList();

否则你可以使用直接的意图方法。

像这样更改您的代码:

Intent intent = new Intent(SplashActivity.this, MainActivity.class);
Bundle b=new Bundle();
b.putStringArrayList("array_list1",(ArrayList<String>)Names);     
b.putStringArrayList("array_list2",(ArrayList<String>)City);
b.putStringArrayList("array_list3",(ArrayList<String>)Country);
b.putStringArrayList("array_list4",(ArrayList<String>)Code);

如果您想通过捆绑对象使用下面的代码行。

b.putParcelableArrayList("array_list5",(ArrayList<LatLng>)coordinates);

否则通过意图对象。

intent.putParcelableArrayListExtra("array_list5",coordinates);
intent.putExtras(b);
startActivity(intent);
于 2015-12-03T06:28:40.520 回答
1

因为LatLng类实现Parcelable 了接口,所以不要Bundle. putStringArrayList使用Bundle.putParcelableArrayList来发送包含实现Parcelable 接口的类对象的 ArrayList。利用

b.putParcelableArrayList("array_list5",coordinates);

如何将 Parcelable 与 List 或 ArrayList 一起使用 - 语法是什么?

这样做:

ArrayList<String> arrCoordinates = new ArrayList<>(coordinates.size());
arrCoordinates.addAll(coordinates);
b.putParcelableArrayList("array_list5",arrCoordinates);

array_list5从 Bundle 中获取

ArrayList<LatLng> coordinates = b.getParcelableArrayList("array_list5"); 
于 2015-12-03T06:27:06.660 回答