在片段之间传递LatLng

时间:2016-06-21 23:54:27

标签: android android-fragments

我正在构建一个应用程序,我需要将LatLng从一个片段传递到另一个片段。目前,我正在使用这种方法:

public static LocationsFragment newInstance(LatLng latLng){
    LocationsFragment fragment = new LocationsFragment();
    Bundle bundle = new Bundle();
    double x = latLng.latitude;
    double y = latLng.longitude;
    bundle.putDouble(PATIENT_LAT, x);
    bundle.putDouble(PATIENT_LON, y);
    fragment.setArguments(bundle);
    return fragment;
}

正如您所看到的,我正在使用LatLng并将其分解为双倍。在片段中,我必须将它重新组合在一起。我尝试使用序列化ie:bundle.putSerializable(latlng);但那并没有奏效。有没有办法通过LatLng w / o必须打开它?这有效,但如果可能的话,我宁愿更有效率地做。

1 个答案:

答案 0 :(得分:2)

这里没有性能问题,您只需将Bundle中的值加倍,然后再读取它们。这不是一个繁重的操作,这就是Android的工作方式。其他方式,例如向处理程序发送广播消息或Message,它们都需要在Bundle中打包一个值,我认为没有比这更好的了。

此外,如果需要,setArguments将帮助您的应用重新创建片段,这些参数仍然存在。如果您使用的参数不起作用的构造函数。

如果此类实现了可序列化的接口,您将能够将latLng作为Serializable。但是,如果您真的关心性能,我认为两个双值将更有效。虽然我无法想到这样的用例,即在片段之间的包中传递参数可能是个问题。