如何使用Bundle发送android对象?

时间:2014-09-03 14:45:19

标签: java android google-maps

我知道有可能通过put / get-Serializable发送实现Serializable或Parcelable的对象,相应地使用Intents和Bundles put / get-Parcelable。

我需要将Activity中的Marker对象发送到Fragment。我已经发送了其他原始数据,但是因为它没有实现上面提到的任何接口而遇到了Marker对象的麻烦。我认为为一个Marker字段创建一个单独的类并不是一个好主意。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

正如@tyczj评论的那样,Marker没有实现Parcelable。更进一步,它是最终的,所以你不能将它子类化。

最好的办法是让片段直接从活动中获取标记。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Marker marker = ((MainActivity)getActivity).getmarker();
    if (marker != null) {
        // Do something with marker object
    }

您的活动会将标记保存为实例字段,并创建一个获取它的方法:

Marker mMarker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    mMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(20, 100)));
    ...
}

public Marker getMarker() {
    return mMarker;
}