gpt4 book ai didi

android - 如何将位置类型 ArrayList 从 android 中的 MainActivity 传递给 MapsActivity?

转载 作者:行者123 更新时间:2023-11-29 14:26:20 25 4
gpt4 key购买 nike

我想做的是将位置列表传递给 map Activity ,并在这些位置上放置标记。我试过在 MainActivity 中使用

public class MainActivity extends AppCompatActivity implements Parcelable {

ArrayList<Location> locs=new ArrayList<>();
...
locs.add(location);
...
Intent in = new Intent(context,MapsActivity.class);
in.putExtra("setlocations",locs);
startActivity(in);
...
@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(locs);

}
}

然后在MapsActivity的onCreate()中

 Bundle extras = getIntent().getExtras();
if(extras != null){
locs=(ArrayList<Location>)getIntent().getParcelableExtra("setlocations");
addMarkeratLocation();
}

addMarkeratLocation() 方法使用 locs 列表使用 for 循环添加标记

public void addMarkeratLocation(){
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.mipmap.dott);
LatLng addpoint=new LatLng(0.0,0.0);
for(int i=0;i<locs.size();i++){
addpoint = new LatLng(locs.get(i).getLatitude(), locs.get(i).getLongitude());
mMap.addMarker(new MarkerOptions().position(addpoint).icon(icon));
}
mMap.moveCamera(CameraUpdateFactory.newLatLng(addpoint));
}

当 Intent 被触发时,我的应用程序崩溃了。并且 logcat 显示java.lang.NullPointerException:尝试在空对象引用上调用虚方法“int java.util.ArrayList.size()”为什么显示 null?这是我第一次使用 Parcelable 接口(interface)。有什么我遗漏的吗?任何输入将不胜感激,谢谢。

最佳答案

`Location` class is not a Parcalable class.

Intent.putExtra()函数只接受原始数据类型和 Parcelable 数据类型。所以你不能通过 List<Location>通过 Intent 。相反,您可以使用 Gson序列化 Location 数组列表并将其作为 Json 字符串传递给 MapActivity 的库在 MapActivity将 Json 字符串反序列化为 Location 数组。

关于android - 如何将位置类型 ArrayList 从 android 中的 MainActivity 传递给 MapsActivity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46144201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com