【发布时间】:2017-09-10 18:35:38
【问题描述】:
我要做的是将位置列表传递给地图活动并在这些位置上放置标记。我试过在 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: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
为什么显示null?这是我第一次使用 Parcelable 接口。我有什么遗漏的吗?任何意见将不胜感激,谢谢。
【问题讨论】:
标签: android android-intent arraylist location