在Activity中使用SupportMapFragment而不是FragmentActivity

时间:2014-06-30 08:12:25

标签: android google-maps

我正在使用SupportMapFragment在我的活动中显示谷歌地图。但是活动必须声明为FragmentActivity。有没有办法在Activity而不是FragmentActivity中使用它?这是我的工作:

在xml中,我使用:

<fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

在课程档案中​​:

public class MapActivity extends FragmentActivity {

Context context;
GPSTracker gps;
Location location;
GoogleMap mMap;

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_map);
    gps = new GPSTracker(this);
    location = gps.getLocation();
    mMap = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMap();
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng((locLat + location.getLatitude()) / 2,
                    (locLng + location.getLongitude()) / 2), 12.0f));
}

1 个答案:

答案 0 :(得分:0)

正确的做法是:

  • 将您的地图放入一个片段中,并在您的活动中为此片段充气。

您的xml代码:

<com.google.android.gms.maps.MapView
    android:id="@+id/map_detail"
    android:layout_width="match_parent"
    android:layout_height="246dp" />

你的java代码放入活动来膨胀片段:

FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, new MapFragment()).commit();

通过这种方式,您可以在活动类中实现Activity,在片段类中实现Fragment。