我正在构建一个应用程序,我需要将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必须打开它?这有效,但如果可能的话,我宁愿更有效率地做。
答案 0 :(得分:2)
这里没有性能问题,您只需将Bundle
中的值加倍,然后再读取它们。这不是一个繁重的操作,这就是Android的工作方式。其他方式,例如向处理程序发送广播消息或Message
,它们都需要在Bundle
中打包一个值,我认为没有比这更好的了。
此外,如果需要,setArguments
将帮助您的应用重新创建片段,这些参数仍然存在。如果您使用的参数不起作用的构造函数。
如果此类实现了可序列化的接口,您将能够将latLng
作为Serializable
。但是,如果您真的关心性能,我认为两个双值将更有效。虽然我无法想到这样的用例,即在片段之间的包中传递参数可能是个问题。