我认为一种解决方案是使用此修改版本的支持库,其中 FragmentActivity 扩展 MapActivity 而不是 Activity:
https://github.com/petedoyle/android-support-v4-googlemaps
请记住,您需要在 Activity 类中创建 MapView 对象并将其传递给片段,方式如下:
public class MyMapActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Exchanger.sMapView = new MapView(this, "your_api_key");
}
public static class Exchanger {
public static MapView sMapView;
}
}
并且片段将是
public class MapFragment extends Fragment {
@Override
public void onCreate(Bundle args) {
super.onCreate(args);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup vg, Bundle data) {
final ViewGroup parent = (ViewGroup) MyMapActivity.Exchanger.sMapView.getParent();
if (parent != null)
parent.removeView(MyMapActivity.Exchanger.sMapView);
return MyMapActivity.Exchanger.mMapView;
}
}
MyMapActivity
在TabsFragmentActivity
您链接的教程中。记得使用修改版的支持库(下载链接)
上述方法现已弃用。
您现在可以使用 MapFragment:http:
//developer.android.com/google/play-services/maps.html