我想在活动之间传递arraylist

时间:2013-07-20 07:09:38

标签: android android-intent

 ArrayList<String> list = new ArrayList<String>();
 list.add(p);

我希望使用putStringArray.am通过意图发送列表数据,但无法通过getIntent()进行检索。

请给我一个很好的语法来解析数据或示例代码

4 个答案:

答案 0 :(得分:2)

在您的接收意图中,您需要:

Intent i = getIntent();  
my_list = i.getStringArrayListExtra("list");

答案 1 :(得分:2)

ArrayList inmplements Serializable

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

假设您的ArrayList类型为字符串

ArrayList<String> list = new ArrayList<String>();
list.add(p);
Intent i = new Intent(MainActivity.this,SecondActivity.class);
i.putExtra("key", list);
startActivity(i); 

接收

Intent in = getIntent();
 ArrayList<String> list = in.getStringArrayListExtra("key"); 

答案 2 :(得分:1)

如果您的活动在同一个过程中运行,也就是说,如果您不在清单文件中使用android:proces属性,那么您可以使用单例或静态字段轻松共享所需的任何对象。由于您的活动已同步并在主UI线程中运行,因此无需在Intent内发送对象。如果你真的想将它封装到Intent中,你需要实现Parcelable接口(你也可以使用Serializable,但它有更大的开销)。

答案 3 :(得分:1)

第一项活动的代码

    ArrayList<String> arraylist1= new ArrayList<String>();

    Intent intent= new Intent(FirstActivity.this, SecondActivity.class);
    Bundle Ext= new Bundle();
    Ext.putStringArrayList("ArrayName", arraylist1);
    intent.putExtras(Ext);
    startActivity(intent); 

您的第二个活动的代码

 ArrayList<String> arraylist2= new ArrayList<String>();

    Intent intent= getIntent();
    arraylist2 = intent.getExtras().getStringArrayList("Arrayname");