可以通过在Fragment的生命周期方法中手动控制Map Fragment的显示和隐藏来解决此问题。具体的做法是,在每个Fragment的onCreateView()方法中通过View.findViewById()方法来获取Map Fragment的实例,然后在onResume()方法中显示Map Fragment,在onPause()方法中将其隐藏。
示例代码如下:
public class FragmentA extends Fragment {
private GoogleMap googleMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_a, container, false);
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.map);
if (mapFragment != null) {
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
}
});
}
return rootView;
}
@Override
public void onResume() {
super.onResume();
if (googleMap != null) {
googleMap.setVisible(true);
}
}
@Override
public void onPause() {
super.onPause();
if (googleMap != null) {
googleMap.setVisible(false);
}
}
}
注意:上述示例代码中使用了Google Maps API,在使用之前需要先在项目中引入相应的库。