Android Maps V2 App Crashing

馋奶兔 提交于 2019-12-12 16:44:01

问题


I have made an app that uses Google Android Maps API V2 and I have followed every step in the guide provided by Google but it doesn't work unfortunely and it crashes every time I try to start it up. So I'm wondering what is the problem?

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:


Here a blog post I wrote on how to integrate Google Maps into you application:

Creating Google Map Application

From your error it look like you did not perform correctly steps 2-3 of the blog guide, for adding Google Play services library into your application.

If you follow carefully the steps written in the guide you will end up with the end result you can see at the end of the post.




回答2:


I assumed that you have already get Google Maps Android API v2 key and have Google Play services. If you not have already installed it then please follow below steps to solve this problem_

  • Step 1. you can found it in Android SDK Manager under Extras tick check box of -Google Play services install it and after complete installation, restart your Eclipse.

  • Step 2. Add library named_ google-play-services_lib found under the extras folder of your Android SDK setup folder to your Android project_

Path of google service 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 

I hope this will solve your ploblem.




回答3:


For me adding:

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

And changing the xml to

    <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"  />

resolved the problem. I hope you resolve it too!




回答4:


Looks like you didn't add the Google Play Services library to your project.

It's located at {Android SDK}\extras\google\google_play_services

Add it as Android Library Project to Eclipse and then add it to your project.



来源:https://stackoverflow.com/questions/15356981/android-maps-v2-app-crashing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!