2013-03-29 2 views
1

안녕하세요, Google지도 조각을 표시하기 위해 지원 맵 조각을 사용하려고 애 쓰고 있습니다. 지금까지 아무런 기쁨도 안드로이드 지원 -v4 jar와 google-play-service_lib을 모두 갖고있는 프로젝트를 파기하지 않았습니다. 여기SupportMapFragment 클래스가 안드로이드에 오류가 없습니다.

항아리 나의 레이아웃

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 

</RelativeLayout> 

내지도 활동

package com.jr.haliotest; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.CameraPosition; 
import com.google.android.gms.maps.model.LatLng; 
import com.jr.haliotest.utils.IntentFilters; 
import com.jr.haliotest.utils.Position; 

/** 
* @author RichardsJ 
* 
*/ 
public class MapActivity extends FragmentActivity implements IntentFilters { 

    private GoogleMap googleMap; 

    private Position mPosition; 

    private CameraPosition mCameraPosition; 

    /* 
    * (non-Javadoc) 
    * 
    * @see android.app.Activity#onCreate(android.os.Bundle) 
    */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map_view_layout); //fails here 
     mPosition = getIntent().getParcelableExtra(INTENT_EXTRA_POSITION); 
     mCameraPosition = new CameraPosition(new LatLng(
       mPosition.getLattitude(), mPosition.getLongetude()), 0, 0, 0); 
     initialiseView(); 
    } 

    private void initialiseView() { 

     googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

     if (googleMap == null) { 
      Log.d("", "Map wasnt loaded properly"); 
     } else { 
      Log.d("", "Map loaded fine"); 
      googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     } 

     googleMap.moveCamera(CameraUpdateFactory 
       .newCameraPosition(mCameraPosition)); 

    } 
} 

전체 스택 추적

입니다
03-29 00:20:17.501: E/AndroidRuntime(2211): FATAL EXCEPTION: main 
03-29 00:20:17.501: E/AndroidRuntime(2211): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:365) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.Activity.setContentView(Activity.java:1912) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.jr.haliotest.MapActivity.onCreate(MapActivity.java:36) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.Activity.performCreate(Activity.java:5066) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.ActivityThread.access$600(ActivityThread.java:151) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.os.Looper.loop(Looper.java:155) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at android.app.ActivityThread.main(ActivityThread.java:5485) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) 
03-29 00:20:17.501: E/AndroidRuntime(2211):  at dalvik.system.NativeStart.main(Native Method) 

지원되는 개체 대신 MapFragment 개체를 사용하면 정상적으로 작동합니다.

어떤 아이디어가 있습니까? 내가 뭘 놓치고 있니? 당신이로 가져올 수 있도록,

기본적으로 http://developer.android.com/google/play-services/index.html

, 당신은 당신의 엑스트라 디렉토리에 코드가있을 수 있습니다 :

+0

[1], 그것은 도움이 될 수있는이 [링크]를 참조해야 [1] : http://stackoverflow.com/questions/13733299/initialize-mapfragment-programmatically -with-maps-api-v2 –

답변

0

당신은 구글이 SDK를 플레이 얻을 필요가, 기쁨 응용 프로그램을 다시 설치, 청소하지 일식을 닫는 시도 작업 공간을 선택한 다음 컴파일하여 프로젝트에 라이브러리로 추가하면 설정해야합니다.

+0

정확히 내가 한 일은 바로 그 것이다. 내 libs 폴더에 google-play-service.jar이 있습니다. – jonney

+0

내 프로젝트의 종속성으로 실제 프로젝트 폴더를 추가했는데 이제 Android 라이브러리를 실행할 수 없다는 메시지가 나타납니다. – jonney

+0

Google 재생 프로젝트를 실행하려고합니까? 그렇지 않으면 당신이하고있는 일과 함께 자세히 들어가고 싶을 수도 있습니다. 내 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "다른 이름으로 실행 ..."하면 라이브러리가 있지만 프로젝트가 실행됩니다. –

5

나는 그것을 작동시킬 수있었습니다.

여기에 Google지도 v2에서 지원되는 라이브러리를 사용하는 방법에 대한 구체적인 단계가 있습니다. 당신의 lib 폴더에

  1. 사본 구글 플레이 서비스 LIB
  2. 당신의 lib 폴더에
  3. 복사 안드로이드 지원 V4 lib 디렉토리
  4. 작업 공간
  5. 로 빌드 경로에
  6. 수입 구글 플레이 서비스 프로젝트를 1과 2를 추가
  7. 프로젝트를 선택하고 속성> Android를 클릭하고 프로젝트 라이브러리 (Google Play 서비스)를 추가하고 "라이브러리입니다"를 선택하지 마십시오
  8. Google Play 서비스 프로젝트를 선택하고 마우스 오른쪽 버튼으로 클릭 한 다음 속성> android> tick "lib"
  9. FragmentActivity를 사용하고 지원을 사용하여 지원되는 라이브러리를 사용하십시오.
  10. 정리하고 다시 빌드하고 이클립스를 종료하고 이전에 장치에서 응용 프로그램을 제거하고 이클립스를로드 한 다음 다시 정리하고 다시 작성하십시오. 그것은 이제 모든 작업
관련 문제