2012-03-31 8 views

Odpowiedz

8

Here is a book's sample application pokazujący, jak uzyskać MapView w Fragment w aplikacji na poziomie interfejsu API 11+. W większości jest to tylko MapActivity. Oto najważniejsze fragmenty fragmentu, który ładuje MapView:

public class MapFragment extends Fragment { 
    private MapView map=null; 
    private MyLocationOverlay me=null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
    return(new FrameLayout(getActivity())); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    map=new MapView(getActivity(), "0mjl6OufrY-tHs6WFurtL7rsYyEMpdEqBCbyjXg"); 
    map.setClickable(true); 

    map.getController().setCenter(getPoint(40.76793169992044, 
              -73.98180484771729)); 
    map.getController().setZoom(17); 
    map.setBuiltInZoomControls(true); 

    Drawable marker=getResources().getDrawable(R.drawable.marker); 

    marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
          marker.getIntrinsicHeight()); 

    map.getOverlays().add(new SitesOverlay(marker)); 

    me=new MyLocationOverlay(getActivity(), map); 
    map.getOverlays().add(me); 

    ((ViewGroup)getView()).addView(map); 
    } 

    // rest of fragment here 
} 
+1

dzięki za odpowiedź ... Jednak nie moja aktywność musi być mapactivity? Obecnie mam jedną akcję z trzema fragmentami, z których jeden chciałbym pokazać mapę – hermann

+1

@hermann: "czy moja aktywność musi być mapactivity?" - tak, 'MapView' wymaga, aby jego działalność hostingowa była" MapActivity ". "Obecnie posiadam jedną aktywność z trzema fragmentami, z których jeden ma ochotę pokazać mapę" - tylko dlatego, że jest "MapActivity" nie oznacza, że ​​jedyną * rzeczą, którą może pokazać jest "MapView". To powinno działać dobrze. – CommonsWare

+0

Otrzymuję następujący błąd podczas próby wprowadzenia tego samego 12-03 03: 22: 36.903: E/dalvikvm (12866): Nie można znaleźć klasy "com.google.android.maps.MapView", do której odwołuje się metoda method. m7.nomad.MapsFragment.onActivityCreated –