2012-12-26 4 views
11

여기에서이 주제에 대한 몇 가지 질문을 찾았지만 내 프로젝트가 해당 클래스를 포함하는 라이브러리를 참조하고 있다는 응답이 적용되지 않는 것 같습니다. 여기에 내 코드입니다 : 존재한다는 것을 인정하는 것, 그래서 Google지도 api v2 - android.app.Fragment 유형을 확인할 수 없습니다. 필수 .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")); 


    } 
} 

그래서 당신은 내가 수입의 조각 라이브러리를 참조하는 것을 볼 수있다, Eclipse는 오류가 발생하지 않습니다. 아래 이미지에서 참조 된 라이브러리가 표시된 이클립스 프로젝트를 볼 수 있습니다. 여기에서 findFragmentById()를 사용하여 FragmentManager 클래스를 볼 수 있습니다. 비슷한 방식으로 참조하는 다른 클래스도 찾았습니다. 결론적으로 lib 폴더에 라이브러리가 있고 결론적으로 이클립스는 코드에 오류가 없지만 패키지는 오류 때문에 내 보내지 않으며 유일한 오류는이 코드의 " p "in package : 'android.app.Fragment 유형을 확인할 수 없습니다. 그것은 간접적으로 필요한 .class 파일 '

referenced libraries

어떤 아이디어에서 참조?

경로를 몇 번 정리하고 다시 작성하려고했습니다.

답변

27

당신은 안드로이드의 이전 ICS 버전을 실행해야하고 사용 "으로 MapFragment"에 당기는

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

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

에 변화 시도 내장 된 조각의 버전이 아니라 지원 라이브러리 버전

+0

그랬습니다. 항상 작은 것들. –

3

대상 SDK가 3.0 이상인지 확인하십시오.

Eclipse에서 프로젝트 메뉴를 클릭하고 속성을 클릭 한 다음 왼쪽 Android를 클릭하고 대상 SDK 3.0 이상을 선택합니다.