如何让google maps api从android.app.Fragment而不是Fragment Activity扩展

时间:2016-04-10 22:54:41

标签: java android google-maps android-fragments android-navigation-drawer

我遇到的问题是我试图让谷歌地图api在我的应用中运行。以前有它工作,但我已经添加导航抽屉到我的应用程序,使用不同类型的片段 android.app.Fragment ,当我添加代码到时,地图使用FragmentActivity片段类和扩展android.app.Fragment我得到以下errors

  

错误:(46,63)错误:找不到符号方法getSupportFragmentManager()

     

错误:(66,48)错误:不兼容的类型:MyMapFragment无法转换为Context

     

错误:(66,171)错误:不兼容的类型:MyMapFragment无法转换为Context

这是我的地图片段类

public class MyMapFragment extends android.app.Fragment implements OnMapReadyCallback {

private GoogleMap mMap;

public MyMapFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate(R.layout.fragment_map, container, false);

    return view;

    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

继承了fragment_map.xml

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="wit.ie.mightyangler.Fragment.MapFragment" />

1 个答案:

答案 0 :(得分:0)

使用不支持版本

MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

和xml

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>