2012-12-26 9 views
11

Znalazłem tutaj kilka pytań na ten temat, ale ich odpowiedzi nie wydają się dotyczyć tego, że mój projekt odwołuje się do biblioteki zawierającej tę klasę. Oto mój kod:Google maps api v2 - Typ android.app.Fragment nie może zostać rozwiązany. Jest pośrednio wymieniony na podstawie wymaganych plików .class.

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


    } 
} 

Więc widać, że odwołuje się do biblioteki fragmentu w imporcie, Eclipse zgłasza żadnych błędów, więc wydaje się potwierdzać, że istnieje. Na poniższym obrazku widać, że w moim projekcie eclipse wyświetlane są biblioteki referencyjne. W nim widać klasę FragmentManager z opcją findFragmentById(). Znalazłem także inne klasy, do których odwołuję się w podobny sposób. Podsumowując, mam biblioteki w folderze lib i są one potwierdzane przez zaćmienie i nie zawierają błędów w kodzie, ale pakiet nie eksportuje z powodu błędów, a jedyny błąd jest na linii jeden z tego kodu obok " p "w pakiecie, który stwierdza:" Typ android.app.Fragment nie może zostać rozwiązany. To jest pośrednio odwołuje się od wymagane pliki .class

referenced libraries

jakieś pomysły?

Kilka razy spróbowałem oczyścić i odbudować ścieżki.

Odpowiedz

27

Spróbuj zmienić

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

do

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

musi być uruchomiony wstępną wersję ICS Android i ciągną w „MapFragment”, który wykorzystuje wbudowany w wersji fragmenty i nie wersja biblioteki wsparcia.

+0

To się udało. Zawsze te małe rzeczy. –

3

Upewnij się, że docelowy pakiet SDK ma wartość 3.0 lub wyższą.

W Eclipse, kliknij menu Projekt, kliknij Właściwości, kliknij Android po lewej, wybierz docelowy pakiet SDK 3.0 lub nowszy.

Powiązane problemy