不幸的是谷歌地图已停止

时间:2014-09-03 09:23:13

标签: android android-activity android-fragments google-maps-android-api-2

我会在我的模拟器上获得谷歌地图。 我按照说明进行操作 当我运行该应用程序时,会显示错误消息:很遗憾DemoGoogleMapsV2已停止。

我的androidmanifest.xml:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission android:name="com.demogooglemapsv2.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.demogooglemapsv2.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"/>
<!-- The following two permissions are not required to use
Google Maps Android API, 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" >

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

<activity
android:name=".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>
</application>

</manifest>

my activity_main.xml:

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

我的MainActivity.java:

 package com.demogooglemapsv2;
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);
}
}

日志错误:

  

09-04 17:43:51.170:E / Trace(1477):错误打开跟踪文件:没有这样的   文件或目录(2)09-04 17:43:53.449:E / AndroidRuntime(1477):   致命异性:主09-04 17:43:53.449:E / AndroidRuntime(1477):   java.lang.RuntimeException:无法启动活动   ComponentInfo {com.demogooglemapsv2 / com.demogooglemapsv2.MainActivity}:   android.view.InflateException:二进制XML文件行#11:错误   inflating class fragment 09-04 17:43:53.449:E / AndroidRuntime(1477):     在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.app.ActivityThread.access $ 600(ActivityThread.java:141)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.os.Handler.dispatchMessage(Handler.java:99)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.os.Looper.loop(Looper.java:137)09-04 17:43:53.449:   E / AndroidRuntime(1477):at   android.app.ActivityThread.main(ActivityThread.java:5041)09-04   17:43:53.449:E / AndroidRuntime(1477):at   java.lang.reflect.Method.invokeNative(Native Method)09-04   17:43:53.449:E / AndroidRuntime(1477):at   java.lang.reflect.Method.invoke(Method.java:511)09-04 17:43:53.449:   E / AndroidRuntime(1477):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)09-04   17:43:53.449:E / AndroidRuntime(1477):at   dalvik.system.NativeStart.main(Native Method)09-04 17:43:53.449:   E / AndroidRuntime(1477):引起:android.view.InflateException:   二进制XML文件行#11:错误膨胀类片段09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.rInflate(LayoutInflater.java:746)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.inflate(LayoutInflater.java:489)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.inflate(LayoutInflater.java:396)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.inflate(LayoutInflater.java:352)09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.app.Activity.setContentView(Activity.java:1881)09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.demogooglemapsv2.MainActivity.onCreate(MainActivity.java:17)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.app.Activity.performCreate(Activity.java:5104)09-04   17:43:53.449:E / AndroidRuntime(1477):at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)   09-04 17:43:53.449:E / AndroidRuntime(1477):... 11更多09-04   17:43:53.449:E / AndroidRuntime(1477):引起:   java.lang.IllegalStateException:应用程序中的元数据标记   AndroidManifest.xml没有正确的值。预计5089000   但是找到了0.你必须在其中有以下声明    元素:09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.common.GooglePlayServicesUtil.A(未知来源)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(未知   来源)09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.internal.u.I(未知来源)09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.internal.u.H(未知来源)09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.MapsInitializer.initialize(未知来源)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.SupportMapFragment $ b.jz(未知来源)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.SupportMapFragment $ b.a(未知来源)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.dynamic.a.a(Unknown Source)09-04 17:43:53.449:   E / AndroidRuntime(1477):at   com.google.android.gms.dynamic.a.onInflate(未知来源)09-04   17:43:53.449:E / AndroidRuntime(1477):at   com.google.android.gms.maps.SupportMapFragment.onInflate(未知   来源)09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:291)   09-04 17:43:53.449:E / AndroidRuntime(1477):at   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)   09-04 17:43:53.449:E / AndroidRuntime(1477):... 21更多

4 个答案:

答案 0 :(得分:0)

将FragmentActivity替换为Activity,确保输入正确的api密钥。

代替 com.google.android.gms.maps.MapFragment 使用 com.google.android.gms.maps.SupportMapFragment

确保您的设备上安装了Google Play服务。这就是为什么尝试在不在模拟器上的真实设备上运行应用程序的原因。

答案 1 :(得分:0)

添加以下activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

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

答案 2 :(得分:0)

在清单文件中添加此标记

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

答案 3 :(得分:0)

希望您的项目和google-play-services_lib两者都在同一个workspace,并且您已将其添加为应用程序中的library项目。如果您的API-Key没问题,那么您需要像这样更改。

1。在meta-data

中的application标记内添加此manifest
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

2。作为minSdkVersion="8",您应该使用SupportMapFragment,因此activity_main.xml看起来像这样

<?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> 

3。您应该延长Activity并使用FragmentActivity

而不是SupportFragmentManager()
public class MainActivity extends FragmentActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
      GoogleMap mMap = fm.getMap(); 
  }
}
  

安装后尝试在真实设备或Genymotion的模拟器上运行它   谷歌播放服务。否则你将面临崩溃

相关问题