我正在寻找一种通过捆绑传递
的方法ArrayList<Integer[]>
对象到片段(在活动已经创建之后,所以我不能使用意图)。通过寻找android api,没有方法似乎做我正在寻找的。我该怎么办?
答案 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);