2013-03-12 61 views
2

我製作了一個使用Google Android Maps API V2的應用程序,並且我遵循了Google提供的指南中的每一步,但它不能正常工作,每次嘗試啓動時都會崩潰。所以我想知道有什麼問題?Android Maps V2應用程序崩潰

MainActivity.java

package com.android.maptest; 

import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

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

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

Maptest的Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.maptest" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="16" /> 
    <permission 
     android:name="com.android.maptest.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

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

    <uses-permission android:name="com.android.maptest.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" /> 


    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:debuggable="true" > 
     <activity 
      android:name="com.android.maptest.MainActivity" 
      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="api_key" /> 
    </application> 

</manifest> 

logcat的

03-12 09:46:13.150: D/AndroidRuntime(1547): Shutting down VM 

03-12 09:46:13.150: W/dalvikvm(1547): threadid=1: thread exiting with uncaught exception (group=0x410e22a0) 

03-12 09:46:13.155: E/AndroidRuntime(1547): FATAL EXCEPTION: main 

03-12 09:46:13.155: E/AndroidRuntime(1547): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.maptest/com.android.maptest.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at 

android.app.ActivityThread.access $ 600(ActivityThread.java:140)

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.os.Handler.dispatchMessage(Handler.java:99) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.os.Looper.loop(Looper.java:137) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.ActivityThread.main(ActivityThread.java:4898) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at java.lang.reflect.Method.invokeNative(Native Method) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at java.lang.reflect.Method.invoke(Method.java:511) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at dalvik.system.NativeStart.main(Native Method) 

03-12 09:46:13.155: E/AndroidRuntime(1547): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:308) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Activity.setContentView(Activity.java:1924) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at com.android.maptest.MainActivity.onCreate(MainActivity.java:11) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Activity.performCreate(Activity.java:5206) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  ... 11 more 

03-12 09:46:13.155: E/AndroidRuntime(1547): Caused by: android.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 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Fragment.instantiate(Fragment.java:584) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Fragment.instantiate(Fragment.java:552) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Activity.onCreateView(Activity.java:4849) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  ... 20 more 

03-12 09:46:13.155: E/AndroidRuntime(1547): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  at android.app.Fragment.instantiate(Fragment.java:574) 

03-12 09:46:13.155: E/AndroidRuntime(1547):  ... 23 more 

03-12 09:51:21.560: I/Process(1547): Sending signal. PID: 1547 SIG: 9 
+1

您是否將Google Play服務作爲庫項目添加到當前項目中? – 2013-03-12 09:05:06

+0

你的問題都是一樣的 http://stackoverflow.com/questions/15226429/android-maps-app-not-finding-the-correct-mapview http://stackoverflow.com/questions/15204790/android-maps -v2-application-crash-on-android-phone http://stackoverflow.com/questions/15192334/android-maps-v2-applicati – Geros 2013-03-12 09:13:44

回答

0

看起來你沒有添加谷歌Play服務庫到您的項目。

它位於{Android SDK}\extras\google\google_play_services

其添加爲Android的圖書​​館項目的Eclipse,然後將其添加到您的項目。

+0

我在發佈之前已經這樣做了。 – user2125673 2013-03-12 09:54:26

0

這裏一篇博客文章中我就如何谷歌地圖整合到你的應用程序中寫道:

Creating Google Map Application

從你的錯誤看起來像你沒有執行正確的步驟引導博客2-3, 用於將Google Play服務庫添加到您的應用程序中。

如果您仔細地遵循指南中編寫的步驟,您將最終得到您可以在帖子末尾看到的最終結果。

+0

我確實添加過,在這裏看。 http://i49.tinypic.com/ejd7kl.jpg – user2125673 2013-03-12 09:52:34

+0

你有沒有試過所有的帖子? – 2013-03-12 10:08:24

+0

是的,我已經導入(屬性)它再次導入(安卓工具)它,我已經安裝了谷歌播放服務,我用我的手機(Galaxy S3)作爲模擬器,但我得到了這一點崩潰。感謝您的迴應。 – user2125673 2013-03-12 10:12:09

0

我認爲你已經得到Google Maps Android API v2密鑰並且有Google Play services。如果您沒有安裝的話,那麼請按照下面的步驟來解決這個problem_

  • 步驟1.你可以發現它在Android SDK Manager下的 - 谷歌Play業務Extras打勾複選框,安裝它,並完成安裝後,重新啓動你的Eclipse。

  • 第2步:添加庫named_ google-play-services_lib你的Android SDK安裝文件夾的extras文件夾下找到自己的Android project_

谷歌服務的路徑lib_

{Your_Android_SDK_direct}\extras\google\google_play_services\libproject\google-play-services_lib 

Ex. Location of this lib on My system_ 
C:\Program Files\Android\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib 

我希望這將解決你的問題。

0

對於我補充說:

import com.google.android.gms.maps.SupportMapFragment; 

和更改的XML

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

解決了這個問題。我希望你也解決它!