2012-12-26 9 views
11

Qui ho trovato alcune domande su questo argomento, ma le loro risposte non sembrano essere applicabili dal fatto che il mio progetto fa riferimento alla libreria che contiene la classe. Ecco il mio codice:Google maps api v2 - Il tipo android.app.Fragment non può essere risolto. È indirettamente referenziato dai file .class richiesti

package com.demo.app; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class Mapview extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     GPSTracker gps = new GPSTracker(Mapview.this); 

     // check if GPS enabled  
     if(gps.canGetLocation()){ 

      double latitude = gps.getLatitude(); 
      double longitude = gps.getLongitude(); 

      // \n is for new line 
      // Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
     }else{ 
      // can't get location 
      // GPS or Network is not enabled 
      // Ask user to enable GPS/network in settings 
      gps.showSettingsAlert(); 
     } 

     double latitude = gps.getLatitude(); 
     double longitude = gps.getLongitude(); 


     SupportMapFragment fragment = new SupportMapFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .add(android.R.id.content, fragment).commit(); 

     GoogleMap mMap; 
     mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 
     mMap.addMarker(new MarkerOptions() 
       .position(new LatLng(0, 0)) 
       .title("Hello world")); 


    } 
} 

Così si può vedere che ho fatto riferimento la libreria frammento delle importazioni, Eclipse getta errori così sembra riconoscere che esiste. Nell'immagine qui sotto puoi vedere che il mio progetto di eclissi ci mostra librerie referenziate. In essa puoi vedere la classe FragmentManager con findFragmentById() disponibile. Ho anche trovato le altre classi a cui faccio riferimento in modo simile. Quindi per concludere ho le librerie in una cartella lib, e sono riconosciute da eclipse e non lanciano errori nel codice ma il pacchetto non verrà esportato a causa di errori e l'unico errore è sulla linea uno di questo codice accanto al " p "nel pacchetto che afferma:" Il tipo android.app.Fragment non può essere risolto. Si è indirettamente riferimento dal file .class il termine

referenced libraries

Tutte le idee?

Ho provato a pulire e ricostruire i percorsi un paio di volte.

risposta

27

Prova cambiando

mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 

a

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 

È necessario eseguire una versione ICS pre di Android e si sta tirando in "MapFragment" che utilizza il built-in versione di frammenti e non la versione della libreria di supporto.

+0

L'ha fatto. Sempre le piccole cose –

3

Assicurati che l'SDK di destinazione sia 3.0 o successivo.

In Eclipse, fare clic sul menu Progetto, fare clic su Proprietà, fare clic su Android a sinistra, selezionare un SDK di destinazione di 3.0 o successivo.

Problemi correlati