如何在Tab的Fragment中实现MapFragment



我用FragmentPagerAdapter创建了几个制表符,在这个适配器中,我用getItem方法获得了我的"制表符片段":

 @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new MapsFragment();
            case 1:
                return new GroupsFragment();
            case 2:
                return new InfosFragment();
        }
        return null;
    }

现在我想在我的1上实现一个MapFragment。标签里已经有了

public class MapsFragment extends Fragment implements OnMapReadyCallback {
private MapFragment mapFragment;
public static MapsFragment newInstance() {
    MapsFragment fragment = new MapsFragment();
    return fragment;
}
public MapsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_maps, container, false);
}
@Override
public void onMapReady(GoogleMap googleMap) {
    LatLng augsburg = new LatLng(48.348527, 10.915952);
    googleMap.setMyLocationEnabled(true);
    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(augsburg, 13));
    googleMap.addMarker(new MarkerOptions()
            .title("Augsburg Zoo")
            .snippet("Der coolste Zoo der Welt")
            .position(augsburg));
}

}

但是在这一行我得到了一个不兼容的类型错误:

MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 但是我不知道如何修复它,以及如何编写比这更好的代码!

您可能正在使用SupportMapFragment

修改onCreate()为

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_maps, container, false);
    SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    return view;

}

最新更新