【发布时间】:2014-12-16 08:34:44
【问题描述】:
我从 MainActivity 给 Fragment 设置了一个值,但是 Fragment 中的值变成了 0。 当我登录 moveToLocation() 时,纬度的值为 0,但是当我登录 setLocation 时,纬度的值是正确的传递值。 这是为什么?
主活动
MapFragment mapFragment = new MapFragment();
mapFragment.setLocation(111, 222, "abcAddress");
片段
public class MapFragment extends Fragment {
private GoogleMap mMap;
private double mLatitude;
private double mLongitude;
private String mAddress;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
MapsInitializer.initialize(getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
Log.d("", "You must update Google Maps.");
getActivity().finish();
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mMap = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
moveToLocation();
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.map_page, null);
}
public void setLocation(double latitude, double longitude, String address) {
mLatitude = latitude;
mLongitude = longitude;
mAddress = address;
}
protected void moveToLocation() {
CameraPosition location = new CameraPosition.Builder()
.target(new LatLng(mLatitude, mLongitude)).zoom(15.5f)
.bearing(0).tilt(25).build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(location));
MarkerOptions marker = new MarkerOptions().position(new LatLng(mLatitude, mLongitude)).title(mAddress);
marker.snippet("Snippet");
mMap.addMarker(marker);
}
}
【问题讨论】:
-
显示更多使用替换、提交片段的活动代码。
-
您在尝试设置位置时是否正在创建
MapFragment的新实例? -
我不在 Activity 中使用替换和提交。 Activity 中的其他代码与 Fragment 没有关系。
-
是的,我创建了 MapFragment 的新实例
-
在显示此片段时使用
myFragment.setArguments(bundle);传递值。也显示该代码
标签: android google-maps