2014-07-26 3 views
0

Я использую API карты Google API V2 для карты. Я импортировал библиотеки google-play-service как отдельный проект и установил его как ссылку на мой текущий проект.Ошибка при запуске Google Map API на Android

GoogleMap манифеста

<?xml version="1.0" encoding="utf-8"?> 

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

<permission android:name="com.example.googlemap.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> 
<uses-permission android:name="com.example.googlemap.permission.MAPS_RECEIVE"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.googlemap.GoogleMap" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="This should be correct" /> 

</application> 

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".GoogleMap" > 

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

Однако я получаю сообщение об ошибке, как LogCat:

07-26 09:46:30.191: D/AndroidRuntime(2504): Shutting down VM 
07-26 09:46:30.191: W/dalvikvm(2504): threadid=1: thread exiting with uncaught exception (group=0x40c331f8) 
07-26 09:46:30.199: E/AndroidRuntime(2504): FATAL EXCEPTION: main 
07-26 09:46:30.199: E/AndroidRuntime(2504): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.googlemap/com.example.googlemap.GoogleMap}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread.access$600(ActivityThread.java:127) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.os.Looper.loop(Looper.java:137) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread.main(ActivityThread.java:4512) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at dalvik.system.NativeStart.main(Native Method) 
07-26 09:46:30.199: E/AndroidRuntime(2504): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:272) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Activity.setContentView(Activity.java:1835) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at com.example.googlemap.GoogleMap.onCreate(GoogleMap.java:12) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Activity.performCreate(Activity.java:4465) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  ... 11 more 
07-26 09:46:30.199: E/AndroidRuntime(2504): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Fragment.instantiate(Fragment.java:574) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Fragment.instantiate(Fragment.java:549) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.app.Activity.onCreateView(Activity.java:4235) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673) 
07-26 09:46:30.199: E/AndroidRuntime(2504):  ... 21 more 
07-26 09:46:38.152: I/Process(2504): Sending signal. PID: 2504 SIG: 9 

GoogleMap.java

package com.example.googlemap; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Toast; 

общественный класс GoogleMap расширяет активность {

// Google Map 
private GoogleMap googleMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    try { 
     // Loading map 
     initilizeMap(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

/** 
* function to load map. If map is not created it will create it for you 
* */ 
private void initilizeMap() { 
    if (googleMap == null) { 
     googleMap = ((MapFragment) getFragmentManager().findFragmentById(
       R.id.map)).getMap(); 

     // check if map is created successfully or not 
     if (googleMap == null) { 
      Toast.makeText(getApplicationContext(), 
        "Sorry! unable to create maps", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    initilizeMap(); 
} 
} 

Это также говорит мне MapFragment cannot be resolved to a type err или сообщение.

Любые руководства? Заранее спасибо.

+0

Не могли бы вы показать код, в котором вы создаете экземпляр своего MapFragment, в своей деятельности? – joao2fast4u

ответ

0

Использование SupportMapFragment при вызове карту Fragment вместо этого, что это имя класса, который вы объявили о макете, как это:

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

Не забудьте импортировать SupportMapFragment класс.

Редактировать: используйте SupportFragmentManager также, то есть версию поддержки FragmentManager.

Редактировать 2: Вы должны активировать свою деятельность FragmentActivity, чтобы вы могли использовать getSupportFragmentManager.

+0

После того, как я изменил строку, он дал мне два сообщения об ошибке: Тип несоответствия: невозможно преобразовать из com.google.android.gms.maps.GoogleMap в com.example.googlemap.GoogleMap & Can not cast from Fragment to SupportMapFragment –

+0

Измените имя вашей деятельности от GoogleMap до GoogleMapActivity. У вас могут быть конфликты с классом import com.google.android.gms.maps.GoogleMap. И также измените название своей деятельности в файле манифеста. – joao2fast4u

+0

После того, как я перешел на приватный com.google.android.gms.maps.GoogleMap googleMap; и ваш код выше, все равно появляется сообщение об ошибке: Метод getSupportFragmentManager() не определен для типа GoogleMap –

Смежные вопросы