18

试图在我正在构建的活动中组合一个小 MapFragment,但在让它全部工作时遇到了一些麻烦。我知道 Maps api 和 Play 服务都安装正确,就像我做的测试教程一样,一切正常。

按照此处的文档,我遇到了以下问题:在我的 setUpMapIfNeeded 方法中,我可以使用getFragmentManager()getSupportFragmentManager()。当我使用getFragmentManager()Eclipse 时,它​​很酷,但是当我运行时,我得到一个NoSuchMethodError说法,即该方法未定义。当我选择 时getSupportFragmentManager(),Eclipse 不喜欢它并给我错误“无法从 Fragment 转换为 MapFragment”。那么有什么关系呢?有什么建议么?

private void setUpMapIfNeeded() {
    //Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        if (mMap != null) {
            //do things to the map
            mMap.addMarker(new MarkerOptions().position(LOCATION).title(EXTRA_URL));
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LOCATION,15));
            mMap.getUiSettings().setZoomControlsEnabled(false);
        }
    }
}

如果我可以提供任何其他代码,请告诉我,我很乐意快速发布。

4

4 回答 4

81

我可以使用 getFragmentManager() 或 getSupportFragmentManager()。

这里不应该争论。如果getSupportFragmentManager()您可以使用,那么您正在使用 Android 支持包的片段的反向移植,这是您必须使用的方法。

当我选择 getSupportFragmentManager() 时,Eclipse 不喜欢它并给我错误“无法从 Fragment 转换为 MapFragment”。

那是因为你不应该使用MapFragment. 您正在使用 Android 支持包的片段反向移植,因此您必须使用SupportMapFragment.

于 2013-04-14T20:52:01.133 回答
1

This is what i had to do, because i was working under level 11;

    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.SupportMapFragment;
    import android.support.v4.app.FragmentActivity;

    public class MapaActivity extends FragmentActivity {

    private GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mapa);

        map =  ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapa)).getMap();
    }
}
于 2015-03-17T21:39:38.510 回答
0

嘿,只需将 v4 jar 添加到您的 libs 文件夹并添加到 build 然后在您的 Fragment 页面中导入即可

导入android.support.v4.app.FragmentActivity;

你可以扩展 FragmentActivity

公共类 MainActivity 扩展 FragmentActivity 实现 LocationListener{

}

它还访问 getSupportFragmentManager();

SupportMapFragment fm =(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);

于 2015-07-01T10:00:08.390 回答
0

将您的依赖项更改为:

implementation 'com.google.android.gms:play-services-maps:16.1.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
于 2019-11-08T23:38:05.553 回答