通过bundle传递整数数组的ArrayList

时间:2014-02-17 14:45:12

标签: android arraylist bundle

我正在寻找一种通过捆绑传递

的方法
ArrayList<Integer[]> 

对象到片段(在活动已经创建之后,所以我不能使用意图)。通过寻找android api,没有方法似乎做我正在寻找的。我该怎么办?

4 个答案:

答案 0 :(得分:2)

发送活动:

final Intent intent = new Intent(this, SecondActivity.class);
Bundle extraBundle = new Bundle();

extraBundle.putIntegerArrayList("arraylist", [put array list here]);

intent.putExtras(extraBundle);
intent.setComponent(new ComponentName("com.myapp", "com.myapp.SecondActivity"));

startActivity(intent);

接收活动的onCreate():

final Intent intent = getIntent();
final Bundle extraBundle = intent.getExtras();

ArrayList<Integer> myIntegerArrayList = extraBundle.getIntegerArrayList("arraylist");

您可以在setter和getter方法调用中将"arraylist"更改为您想要的内容,它们只需要相同。

答案 1 :(得分:0)

我使用Gson,转换为JSONArray并通过Bundle发送。但它可能会影响性能。

在第一项活动中

Intent activity = new Intent(MyActivity.this,NextActivity.class);
activity.putExtra("myArrayList", new Gson().toJson(myArrayList);
startActivity(activity);

在其他活动中..

Sting myArrayList;
Bundle extras = getIntent().getExtras();
if (extras != null) {
   myArrayList= extras.getString("myArrayList");

   Type listOfInteger = new TypeToken<List<Integer>>(){}.getType();
   String s = new Gson().toJson(myArrayList, listOfInteger);
   List<Integer> myList = new Gson().fromJson(s, listOfInteger); 
}

答案 2 :(得分:0)

int[] intarray = new int[] {4,5,6,7,8};

Bundle bundle = new Bundle();
bundle.putIntArray("integerarray", intarray);

还是带有int数组的ArrayList?

为此,我认为你应该使用Parcable。 或者您可以尝试通过捆绑包发送单个intArrays并将它们放在接收活动中。 像这样:

int[] intarray1 = new int[] {4,5,6,7,8};
int[] intarray2 = new int[] {4,5,6,7,8};
int[] intarray3 = new int[] {4,5,6,7,8};

Bundle bundle = new Bundle();
bundle.putIntArray("INT_ARRAY1", intarray1);
bundle.putIntArray("INT_ARRAY2", intarray2);
bundle.putIntArray("INT_ARRAY3", intarray3);

Intent intent = new Intent(this,NewActivity.class)
intent.putExtras(bundle);
startActivity(intent)

然后在NewActivity.java中你应该创建一个数组并获取bundle并用接收到的数组填充数组。

答案 3 :(得分:0)

您可以使用方法putIntegerArrayList

传递整数数组列表

以下是代码段

 ArrayList<Integer> values=new ArrayList<>();
            values.add(1);
            values.add(60);
            values.add(75);
            values.add(120);
 Bundle extras = new Bundle();
 extras.putIntegerArrayList(EXTRA_KEY,values);