0
public class PlaceMapsFragment extends SupportMapFragment { 
    private GoogleMap mMap; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     View v = inflater.inflate(R.layout.fragment_place_maps, container, 
       false); 


     setUpMapIfNeeded(); 
     return v; 
    } 

    private void setUpMapIfNeeded() { 
     if (mMap == null) { 
      mMap = ((MapView) findViewById(R.id.map)).getMap(); 
      if (mMap != null) { 
       setUpMap(); 
      } 
     } 
    } 

    private void setUpMap() { 
     mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title(
       "Marker")); 
    } 
} 

ErreurAndroid [SupportMapFragment] La méthode findViewById (int) est pas défini pour le type

The method findViewById(int) is undefined for the type PlaceMapsFragment 

Répondre

2

Si je me souviens bien, tous les fragments ne sont pas une méthode findViewById() native. C'est pourquoi vous devez utiliser la méthode onCreateView().

Cela signifie que vous devez remplacer setUpMapIfNeeded() par setUpMapIfNeeded(View view) et par onCreateView() transmettre v à votre méthode modifiée. Vous devez également remplacer mMap = ((MapView) findViewById(R.id.map)).getMap(); par mMap = ((MapView) view.findViewById(R.id.map)).getMap();.

1

Je ne suis pas sûr que vous pouvez sous-classer la classe SupportMapFragment.

Pour obtenir une nouvelle instance de SupportMapFragment vous appelez SupportMapFragment.newInstance et cela renvoie votre objet.

Si vous le sous-classez et appelez, par exemple, PlaceMapsFragment.newInstance(), vous allez toujours retourner un objet SupportMapFragment.

Si vous souhaitez manipuler la carte par programmation, je vous suggère de procéder comme suit.

this.mSupportMapFragment = SupportMapFragment.newInstance(); 
MapHandler mMapHandler = new mMapHandler(this.mSupportMapFragment.getMap()); 

Espérons que cela aide.

Questions connexes