gpt4 book ai didi

java - 安卓/Java : How to get the ArrayList from an Activity to another?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:05:16 24 4
gpt4 key购买 nike

我想获取从另一个 Activity 传递的值,它适用于多种类型,如 JSONArray、String 等...但我找不到检索 ArrayList 值的方法。

我试了好几种方法都没有成功:

      ArrayList<JSONObject> poiArr;   
JSONArray jsonPoints;
try {
poiArr = new ArrayList<JSONObject>(bundle.getSparseParcelableArray("poiArr"));
//here is the problem
} catch (Exception e) {
e.printStackTrace();
}

try {
jsonPoints = new JSONArray(bundle.getString("lesPoints"));
} catch (JSONException e) {
e.printStackTrace();
}

我有这个错误信息:

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference

有什么想法吗?

最佳答案

JSONObject 不可打包,甚至不可序列化。因此,您剩下的唯一选择是利用 JSONObject 的 toString() 方法,然后依靠 Intent 的 putStringArrayListExtra() 将其传递给另一个。

在另一个 Activity 中,使用 Intent 的 getExtras() 接收并将其转换为 JSONObject,方法是将 String 传递到其构造函数并在需要时循环形成 ArrayList。

比如说,JSONObject的ArrayList是sendingArr:

List<String> sendingListOfStrings = new ArrayList<String>();
for(int i = 0; i < sendingArr.length(); i++) {
sendingListOfStrings.add( sendingArr.getJSONObject(i).toString() );
}

从 ActivityOne 发送到 ActivityTwo:

Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
intent.putStringArrayListExtra("sending_list", sendingListOfStrings);
startActivity(intent);

然后捕获它=在另一个:

ArrayList<JSONObject> receivingArr;
Bundle receivingListOfStrings = getIntent().getExtras();
ArrayList<String> list = receivingListOfStrings.getStringArrayList("sending_list");
for (int i = 0; i < receivingListOfStrings.length(); i++) {
receivingArr.add( new JSONObject( receivingListOfStrings.get(i) ) );
}

关于java - 安卓/Java : How to get the ArrayList<JSONObject> from an Activity to another?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58273507/

24 4 0