2013-05-04 76 views
0

我想添加地圖片段到Android佈局使用谷歌地圖API的v2。 我跟着幾個教程,甚至有一個谷歌已經並且已經被一篇文章指向了這裏。 開始佈局後,我的應用程序崩潰。 我的文件是
清單(在[我的鑰匙]從谷歌控制檯中使用調試代碼和我的包名稱的實際鍵:Android谷歌地圖Api V2在運行時崩潰

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

    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <permission 
     android:name="com.example.publicthreadsmap.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.publicthreadsmap.permission.MAPS_RECEIVE"/> 

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <!-- The following two permissions are not required to use 
     Google Maps Android API v2, but are recommended. --> 
    <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" > 
     <uses-library android:name="com.google.android.maps"/> 
     <activity 
      android:name="com.example.publicthreadsmap.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <meta-data 
       android:name="com.google.android.maps.v2.API_KEY" 
       android:value="[my Key]"/> 
     </activity> 
    </application> 

</manifest> 

佈局:

<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" 
    tools:context=".MainActivity" > 


     <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="23dp" 
     android:text="Test" /> 


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




</RelativeLayout> 

和Java文件:

package com.example.publicthreadsmap; 

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


public class MainActivity extends FragmentActivity { 

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



} 

我抄(進口)的谷歌播放服務-lib的在我的工作區,我的地圖上項目中引用它。
我也引用了v4的android支持jar。

logcat的按摩:
10月5日至4日:19:56.284:E/AndroidRuntime(21660):致命異常:主 10月5日至4日:19:56.284:E/AndroidRuntime(21660):java.lang中。 RuntimeException:無法啓動活動ComponentInfo {com.example.publicthreadsmap/com.example.publicthreadsmap.MainActivity}:android.view.InflateException:二進制XML文件行#18:錯誤膨脹類片段 05-04 10:19:56.284: E/AndroidRuntime(21660):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.ActivityThread.handleLaunchActivity(ActivityThread。 java:1993) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.ActivityThread.access $ 600(ActivityThread.java:127) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1159) 05-04 10:19: 56.284:E/AndroidRuntime(21660):at android.os.Handler.dispatchMessage(Handler.java:99) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.os.Looper.loop( Looper.java:137) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.ActivityThread.main(ActivityThread.java:4507) 05-04 10:19:56.284:E/AndroidRuntime(21660):at java.lang.reflect.Method.invokeNative(Native Method) 05-04 10:19:56.284:E/AndroidRuntime(21660):at java.lang.reflect.Method.invoke(Method.java :511) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:978) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 05-04 10:19:56.284:E/AndroidRuntime 21660):at dalvik.system.NativeStart.main(Native Method) 05-04 10:19:56.284:E/AndroidRuntime(21660):引起:android.view.InflateException:二進制XML文件行#18:錯誤充氣(21660):at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 05-04 10:19:56.284:E/AndroidRuntime(21660) :at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 05 -04 10:19:56.284:E/AndroidRuntime(21660):at android.view.LayoutInflater.inflate(Lay outInflater.java:396) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 05-04 10:19:56.284:E/AndroidRuntime(21660):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:272) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.Activity。的setContentView(活動。java:1835) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.example.publicthreadsmap.MainActivity.onCreate(MainActivity.java:12) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.Activity.performCreate(Activity.java:4469) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: E/AndroidRuntime(21660):E/AndroidRuntime(21660) :... 11更多 05-04 10:19:56.284:E/AndroidRuntime(21660):導致:java.lang.RuntimeException:未找到API密鑰。檢查AndroidManifest.xml中的元素 05-04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.ab.a(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.ab.a(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.ab.a(Unknown Source) 05- 04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.ag.a(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.ag. (未知源) 05-04 10:19:56.284:E/AndroidRuntime(21660):at maps.z.bw.a(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660) :at maps.zronCreateView(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.google.android.gms.maps.internal.IMapFragmentDelegate $ Stub.onTransact(IMapFragmentDelegate .java:107) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.os.Binder.transact(Binder.java:297) 05-04 10:19:56.284:E/AndroidRuntime (21660):at com.google.android.gms.maps.internal.IMapFragmentDelegate $ a $ a.onCreateView(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.google。 android.gms.maps.SupportMapFragment $ a.onCreateView(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.google.android.gms.internal.e $ 4.a(Unknown Source ) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.google.android.gms.internal.ea(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660) :at com.google.android.gms.internal.e.onCreateView(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at com.google.android.gms.maps.SupportMapFr agment.onCreateView(Unknown Source) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-04 10:19 :56.284:E/AndroidRuntime(21660):at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:884) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.support .v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168 ) 05-04 10:19:56.284:E/AndroidRuntime(21660):at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280) 05-04 10:19:56.284:E/AndroidRuntime (21660):at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669) 10月5日至4日:19:56.284:E/AndroidRuntime(21660):...... 21多個

+1

u能張貼堆棧跟蹤 – Raghunandan 2013-05-04 07:39:48

+0

好發佈,對不起。如果它很重要我用Android 4.0.4(真實設備)的星系標籤GT-P7511進行測試。任何想法可以幫助,因爲我在這個新的。 – user2347925 2013-05-04 08:34:39

+0

錯誤是膨脹佈局時,你可以嘗試從臨時基地從你的XML中刪除'textView1'嗎? – 2013-05-04 08:39:13

回答

2

你的錯誤:

E/AndroidRuntime(21660): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.publicthreadsmap/com.example.publicthreadsmap.MainActivity}: android.view.InflateException: Binary XML file line #18: Error inflating class fragment

表明有一個問題充氣類片段,當SupportMapFragment類找不到這通常發生。是什麼讓我覺得你沒有正確引用google-play-services

請閱讀第3步這個博客帖子,並確保你正在做的是正確的,你有一個灰色V旁邊的屬性窗口中的引用:

Google Map API V2

更新:

現在我明白你的問題,改變這種:

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

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="[my Key]"/> 
    </activity> 
</application> 

更改爲:仔細

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.publicthreadsmap.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="[my Key]"/>  
</application> 

看最後activity標籤的位置。 meta-data標籤應該在關閉application標籤之前出現。

+0

感謝您的鏈接。參考我認爲是好的,綠色V顯示在我的屬性窗口的Android標籤。 – user2347925 2013-05-04 09:01:13

+1

檢查@ Mehul的回答。我錯過了堆棧跟蹤中的那條線。它看起來像你的鑰匙有問題。 – 2013-05-04 09:03:15

+0

查看更新的答案。 – 2013-05-04 09:13:08

0

請從清單中刪除線

<uses-library android:name="com.google.android.maps"/> 

。如果您添加了必要的罐子(谷歌播放服務,sndroid支持v4)和模塊,它必須工作。

+0

已刪除,仍然相同。忘記發佈logCat按摩: – user2347925 2013-05-04 08:22:27

+0

如果它很重要我使用Android 4.0.4的星系標籤GT-P7511。任何想法都可以幫助,因爲我是新手。 – user2347925 2013-05-04 08:28:29

+0

是否配置了星系的設置 – Daryn 2013-05-04 08:30:31

2
E/AndroidRuntime(21660): ... 11 more 05-04 10:19:56.284: E/AndroidRuntime(21660): Caused by: java.lang.RuntimeException: API key not found. Check that is in the element of AndroidManifest.xml 

看看how to get api key

並從清單<uses-library android:name="com.google.android.maps"/>,它僅用於在處理現在已經過時的地圖API第1版。

+0

感謝您的回覆。我從清單中刪除了該行,但沒有工作。 api密鑰是根據您發佈的相同鏈接獲得的。我有debug.keystore字符串,我添加了; [包名稱]並啓用了google android map V2服務。 – user2347925 2013-05-04 09:08:54

+0

@ user2347925:你在裏面列出了'',這就是爲什麼編譯器無法找到你的'api key'並給出錯誤信息的原因。 – 2013-05-04 10:37:35

0

添加以下代碼清單文件:

<meta-data 
android:name="com.google.android.gms.version" 
android:value="@integer/google_play_services_version" />