2013-05-15 3 views
14

Я использую API карты Google Map V2 для карты. Я скопировал папку google-play-services.jar в папку libs и установил путь сборки eclipse.Ошибка java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment в Google Map V2

Я получаю исключение, поскольку я добавил logcat.

Пожалуйста, помогите решить эту проблему.

home_map_view.xml

<fragment 
     android:id="@+id/map" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_marginBottom="60dp"/> 

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.app" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> 

    <permission 
     android:name="com.example.app.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

    <uses-permission android:name="com.example.app.permission.MAPS_RECEIVE"/> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="KEY"/> 

     <activity android:name=".MainActivity" android:label="@string/app_name" android:clearTaskOnLaunch="true" 
      android:configChanges="orientation" android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".HomeMapView" android:label="@string/title_home" android:configChanges="orientation" android:launchMode="singleTop" /> 
    </application> 
</manifest> 

HomeMapView.java

public class HomeMapView extends FragmentActivity implements OnTabChangeListener { 

    private GoogleMap mapView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_map_view); 

     // Getting reference to SupportMapFragment of the activity_main 
     SupportMapFragment fragment = new SupportMapFragment(); 
     getSupportFragmentManager().beginTransaction() .add(R.id.map, fragment).commit(); 

     // Getting Map for the SupportMapFragment 
     mapView = fragment.getMap(); 
     mapView.setMyLocationEnabled(true); 
    } 
} 

Logcat:

05-15 23:17:52.843: E/AndroidRuntime(19782): FATAL EXCEPTION: main 
05-15 23:17:52.843: E/AndroidRuntime(19782): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.HomeMapView}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.os.Looper.loop(Looper.java:130) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at java.lang.reflect.Method.invokeNative(Native Method) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at java.lang.reflect.Method.invoke(Method.java:507) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at dalvik.system.NativeStart.main(Native Method) 
05-15 23:17:52.843: E/AndroidRuntime(19782): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:216) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.Activity.setContentView(Activity.java:1660) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at com.example.app.HomeMapView.onCreate(HomeMapView.java:61) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
05-15 23:17:52.843: E/AndroidRuntime(19782): ... 11 more 
05-15 23:17:52.843: E/AndroidRuntime(19782): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.support.v4.app.Fragment.instantiate(Fragment.java:395) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.support.v4.app.Fragment.instantiate(Fragment.java:363) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:264) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
05-15 23:17:52.843: E/AndroidRuntime(19782): ... 20 more 
05-15 23:17:52.843: E/AndroidRuntime(19782): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.example.app-2.apk] 
05-15 23:17:52.843: E/AndroidRuntime(19782): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
05-15 23:17:52.843: E/AndroidRuntime(19782): at android.support.v4.app.Fragment.instantiate(Fragment.java:385) 
05-15 23:17:52.843: E/AndroidRuntime(19782): ... 23 more 

ответ

23

Вы проблема в том, как вы добавили google-play-services к вашему проекту:

I have copied the google-play-services.jar in libs folder and set in the build path of eclipse.

Это неправильно! Прочитайте первые 3 шага этого блога я написал, чтобы получить представление о том, как сделать это правильно:

Google Maps API V2

Короче говоря, вы должны импортировать google-play-services как проект в рабочей области. , а затем ссылаться на него из вашего проекта.

это должно быть результатом:

enter image description here

+0

@Emil Adz Я получаю это исключение java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable. –

+0

Вы совершили все шаги, описанные в Руководстве? –

+1

@ user1996510 Я предполагаю, что вы не обращались к библиотеке сервисов Google Play должным образом. – Raghunandan

11

Используйте фрагмент карты памяти вместо фрагмента карты. Убедитесь, что вы добавили опору libray

<fragment 
    android:id="@+id/map" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:name="com.google.android.gms.maps.SupportMapFragment " 
    android:layout_marginBottom="60dp"/> 

Во-вторых, вы не должны копировать файл jar в путь сборки.

Вы должны передать проект библиотеки игровых сервисов Google в свой проект карты.

Импортируйте проект библиотеки в свою рабочую область. импортируйте то же самое в eclipse.

Щелкните правой кнопкой мыши на свой проект. свойства goto. Выберите Android. нажмите android. просматривать и добавлять проект библиотеки.

enter image description here

+0

@EmilAdz Я не вижу ваше сообщение и не редактирую свой ответ. Мне жаль, если вы так себя чувствуете.Я уже начал редактирование даже до того, как вы отправили ответ. так как вы не могли видеть мое редактирование, которое вы считали иначе – Raghunandan

+0

@EmilAdz i отправил ответ, а затем начал редактировать. вы могли видеть, пока я редактировал. в то время вы отправили ответ. К моменту, когда вы увидите мое обновление, вы подумали, что я скопировал ваш ответ. Мне жаль, что не так. Если вы так чувствуете, я отвечу на ваш ответ. вы берете кредит – Raghunandan

+0

Я не могу помочь, если вы так считаете. Я не могу отредактировать свой ответ, увидев ваш пост. – Raghunandan

0

If everything is woking same as google code then please check manifest file in my case i added geo key and map key that's why exception occurs,

Примечание - не добавить два ключа в карте файл манифеста Вытащить ключ

meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="@string/google_maps_key"/> 

добавить этот код.

<meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="@string/auto_location"/> 

<meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version"/> 
Смежные вопросы