SupportMapFragment - 不能投从片段MapFragment(SupportMap

2019-08-26 22:12发布

试图放在一起的活动我建立一个小MapFragment,但我有一些麻烦它所有的工作。 我知道地图API和播放业务都正确安装,因为我做了测试教程和一切工作正常。

继文档在这里 ,我遇到了以下问题:在我的setUpMapIfNeeded的方法,我既可以使用getFragmentManager()getSupportFragmentManager() 当我使用getFragmentManager() ,Eclipse是冷静了它,但是当我跑,我得到NoSuchMethodError说,该方法是不确定的。 当我选择getSupportFragmentManager() ,Eclipse不喜欢它,并给我的错误“无法从片段转换为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);
        }
    }
}

让我知道如果有任何其他的代码,我可以提供,我会很乐意很快张贴。

Answer 1:

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

这里应该有任何争议。 如果getSupportFragmentManager()是提供给你,那么你正在使用片段的支持Android包的反向移植,这是你必须使用的方法。

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

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



Answer 2:

这是我必须做的,因为我是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();
    }
}


Answer 3:

哎只需V4 jar添加到您的libs文件夹,并添加构建然后在片段页面只是进口

进口android.support.v4.app.FragmentActivity;

你可能能够延伸FragmentActivity

公共类MainActivity扩展FragmentActivity实现LocationListener的{

}

它也访问getSupportFragmentManager();

SupportMapFragment FM =(SupportMapFragment)getSupportFragmentManager()findFragmentById(R.id.map)。



文章来源: SupportMapFragment - cannot cast from Fragment to MapFragment