1

I have serveral Tabs created with a FragmentPagerAdapter and in with this Adapter I'm getting my "Tab-Fragments" with the getItem Method:

 @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;
    }

And now I want to implement a MapFragment on my 1. Tab I already have this:

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));
}

}

But I'm getting an incompatible types Error on this line:

MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); But I have no idea how to fix it and how to write a btter code than this!

Ichor de Dionysos
  • 1,107
  • 1
  • 8
  • 30
  • please see here: http://stackoverflow.com/questions/13733299/initialize-mapfragment-programmatically-with-maps-api-v2 –  Oct 07 '15 at 19:28

1 Answers1

1

You might be using SupportMapFragment.

Change you onCreate() to

@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;

}

Harish Sridharan
  • 1,070
  • 6
  • 10