我整天都在努力做到这一点并没有任何运气。我有一个ArrayList,其中包含一个Coordinate类型数组,我想将它从一个活动传递到另一个活动。我不认为通过使用Intent可以实现这一点。所以我想知道我还有其他选择吗?我想要一些简单的东西..
答案 0 :(得分:0)
您可以拥有一个单独的“Model”类,您可以在其中存储来自一个活动的ArrayList对象,并从另一个活动中检索它。
答案 1 :(得分:0)
创建Bundle并尝试放置ArrayList。然后在意图中发送包。
答案 2 :(得分:0)
您可以编写一个实现Parcelable的ParcelableCoordinate类,然后将Coordinate对象转换为ParcelableCoordinate对象,将它们放入intent中,然后在另一侧执行相反的操作。
答案 3 :(得分:0)
我可能会将值放在第一个活动的数据库中,并且只将一些唯一标识符传递给第二个活动,以便它可以在另一侧重新创建ArrayList。但是,如果您想要快速解决方案,请使用intent bundle并自行序列化/反序列化坐标:
ArrayList<Coordinate> mCoords = new ArrayList<Coordinate>();
private void startOtherActivity()
{
int numCoords = mCoords.size();
Intent intent = new Intent();
intent.putExtra("coord_size", numCoords);
for (int i = 0; i < numCoords; i++)
{
Coordinate coord = mCoords.get(i);
intent.putExtra("coord_x_" + i, coord.getX());
intent.putExtra("coord_y_" + i, coord.getY());
}
//start other activity...
}
然后从另一侧的bundle中获取值并重新生成ArrayList。
编辑:刚刚意识到你在谈论Coordinate []。同样的原则仍然适用,只需在那里嵌套另一个for循环并跟踪每个单独数组的长度。
更新:另一方面,你有类似
的东西int len = intent.getIntegerExtra("coord_size", 0);
for(int i = 0; i < len; i++)
{
float x = intent.getFloatExtra("coord_x_" + i, 0.0);
float y = intent.getFloatExtra("coord_y_" + i, 0.0);
mCoords.add(new Coordinate(x, y));
}