0

我有几个List<String>变量从Splash传递到主要活动:Android:如何将多个ArrayList <String>值和一个ArrayList <LatLng>从一个活动传递到另一个包中?不工作

1)我读的地方,我可以从Splash将它们作为ArrayList<String>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()); 

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

+0

为什么要将每个对象投射到'ArrayList '? –

+0

只有ArrayList 支持方法putStringArrayList并且没有其他方法列表 Zac1

回答

1

putStringArrayList()不会为ArrayList的支持。的

putStingArrayList(); 

否则

使用

putParcelableArrayList(); 

,而不是你可以使用意图的直接方法。

更改代码somethng这样的:

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对象。

intent.putParcelableArrayListExtra("array_list5",coordinates); 
intent.putExtras(b); 
startActivity(intent); 
+0

能否请您解释清单和ArrayList 的第一个和第二个活动?是“intent.putExtras(b);”正确? – Zac1

+0

是的...在putExtras()方法中,你必须传递包的对象... –

+0

intent,putExtras(b);是正确的只有..LatLng类是一个parcelable类,所以应该使用putParcelableArrayList(“array_list5”,坐标); –

1

LatLng因为类实现Parcelable接口,因此代替使用Bundle. putStringArrayList使用Bundle.putParcelableArrayList发送ArrayList的一种新的含有正在执行Parcelable接口类对象。使用

b.putParcelableArrayList("array_list5",coordinates); 

How to use parcelable with List or ArrayList - What is the syntax?

做得一样:

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

,并得到array_list5从捆绑

ArrayList<LatLng> coordinates = b.getParcelableArrayList("array_list5"); 
+0

请问您可以解释列表和ArrayList 的第一个和第二个活动吗?是“intent.putExtras(b);”正确? – Zac1

+0

@ Zac1:我的问题是'为什么要将每个对象投射到ArrayList ? ' –

+0

只有ArrayList 支持方法putStringArrayList,没有其​​他方法列表 Zac1

相关问题