2012-12-26 12 views
11

Burada bu konuyla ilgili bir kaç soru buldum, ancak cevaplarım, projemin, sınıfı içeren kitaplığa başvuruda bulunması olarak geçerli görünmüyor. İşte benim kod: o var olduğunu kabul etmek gibi görünüyor böylece Google Maps api v2 - android.app.Fragment türü çözülemiyor. Bu, dolaylı olarak gerekli kaynaklardan alınmıştır .class files

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


    } 
} 

Yani ben ithalatta Fragment kütüphanesini başvurulan görebilirsiniz Eclipse hiç hata atar. Aşağıdaki resimde, eclipse projemde başvurulan kitaplıkların olduğunu görebilirsiniz. İçinde findFragmentById() ile FragmentManager sınıfını görebilirsiniz. Aynı şekilde başvurduğum diğer sınıfları da buldum. Sonuç olarak kütüphaneler bir lib klasöründe var ve eclipse tarafından onaylandı ve kodda hiçbir hata atılmadı, ancak paket hatalardan dolayı dışa aktarılamayacak ve tek hata bu kodun yanındaki satırda yer alıyor. p "paket halinde şunu ifade eder: 'android.app.Fragment türü çözülemez. Bu dolaylı olarak gerekli .class dosyaları

referenced libraries

Herhangi fikirlerden başvurulmaktadır?

Yolları birkaç kez temizlemeyi ve yeniden oluşturmayı denedim.

cevap

27

Hem Android öncesi bir ICS sürümünü çalıştırıyor olması gerekir ve siz kullandığı "MapFragment" çekerek vardır

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

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

için değiştirmeyi deneyin yerleşik Fragmanlar sürümü değil destek kütüphanesi sürümü.

+0

Bunu yaptı. Her zaman küçük şeyler. –

3

Hedef SDK'nızın 3.0 veya üstü olduğundan emin olun.

Eclipse'de, Proje menüsünü ve Özellikler'i tıklatın, soldaki Android'i tıklatın, 3.0 veya üstü bir hedef SDK seçin.

İlgili konular