簡體   English   中英

Eclipse Google Maps v2錯誤

[英]Eclipse google maps v2 error

我試圖創建使用Google Maps v2在我的應用程序上顯示位置。 我試圖在華碩平板電腦上使用它,但在logcat上卻給我以下錯誤:

    06-21 12:06:10.322: E/AndroidRuntime(21020): FATAL EXCEPTION: main
06-21 12:06:10.322: E/AndroidRuntime(21020): java.lang.RuntimeException: Unable to start activity ComponentInfo{sp.com/sp.com.RestaurantMap}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread.access$600(ActivityThread.java:156)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.os.Looper.loop(Looper.java:153)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread.main(ActivityThread.java:5299)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at java.lang.reflect.Method.invokeNative(Native Method)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at java.lang.reflect.Method.invoke(Method.java:511)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at dalvik.system.NativeStart.main(Native Method)
06-21 12:06:10.322: E/AndroidRuntime(21020): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.Activity.setContentView(Activity.java:1881)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at sp.com.RestaurantMap.onCreate(RestaurantMap.java:28)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.Activity.performCreate(Activity.java:5122)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
06-21 12:06:10.322: E/AndroidRuntime(21020):    ... 11 more
06-21 12:06:10.322: E/AndroidRuntime(21020): Caused by: java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
06-21 12:06:10.322: E/AndroidRuntime(21020):    at mcg.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at mcg.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at mcg.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at mcg.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at mbi.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at lxn.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at lxm.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at fnb.onTransact(SourceFile:107)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.os.Binder.transact(Binder.java:310)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.maps.MapFragment$b.onCreateView(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.internal.d$4.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.internal.d.a(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.internal.d.onCreateView(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at com.google.android.gms.maps.MapFragment.onCreateView(Unknown Source)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.Fragment.performCreateView(Fragment.java:1695)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:861)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.app.Activity.onCreateView(Activity.java:4735)
06-21 12:06:10.322: E/AndroidRuntime(21020):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
06-21 12:06:10.322: E/AndroidRuntime(21020):    ... 21 more

這是我的android清單文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sp.com"
android:versionCode="1"
android:versionName="1.0" >

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

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

<permission
    android:name="sp.com.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="sp.com.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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_FINE_LOCATION" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="sp.com.DetailForm" />
    <activity android:name="sp.com.EditPreference" />
    <activity android:name="sp.com.AlarmActivity" />
    <activity android:name="sp.com.RestaurantMap" />

    <receiver
        android:name="sp.com.OnBootReceiver"
        android:enabled="false" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    <receiver android:name="sp.com.OnAlarmReceiver" />

    <meta-data
        android:name="com.google.android.maps.v2.API Key"
        android:value="--- the key ---" />
</application>

這是我的map.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"
tools:context=".MainActivity" >

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

這是我的restaurantmap.java活動。

 package sp.com;

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

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class RestaurantMap extends Activity {
    // static final LatLng RESTAURANT = new LatLng(1.334611, 103.746836);
    // static final LatLng KIEL = new LatLng(1.333522, 103.740286);
    private GoogleMap map;
    private double lat;
    private double lon;
    private String restaurantName;
    private double myLat;
    private double myLon;

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

        lat = getIntent().getDoubleExtra("LATITUDE", 0);
        lon = getIntent().getDoubleExtra("LONGITUDE", 0);
        restaurantName = getIntent().getStringExtra("NAME");
        myLat = getIntent().getDoubleExtra("MYLATITUDE", 0);
        myLon = getIntent().getDoubleExtra("MYLONGITUDE", 0);

        LatLng RESTAURANT = new LatLng(lat, lon);
        LatLng ME = new LatLng(myLat, myLon);

        map = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.restaurant_map)).getMap();
        Marker restaurant = map.addMarker(new MarkerOptions().position(
                RESTAURANT).title(restaurantName));
        Marker me = map.addMarker(new MarkerOptions()
                .position(ME)
                .title("ME")
                .snippet("My Location")
                .icon(BitmapDescriptorFactory
                        .fromResource(R.drawable.ic_launcher)));

        // Move the camera instantly to restaurant with a zoom of 15.
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(RESTAURANT, 15));

        // Zoom in, animating the camera.
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
    }

}

誰能幫助我找出我做錯了什么? 我仍然是Java的初學者,非常感謝您的幫助。 干杯!

這是繼承問題。 如果您的xml中有標簽,則您的活動應擴展FragmentActivity或從FragmentActivity擴展的任何其他活動,例如actionBarActivity。

您也沒有Google Play服務所需的元數據標簽。 它應該是應用程序標記的直接子代。

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

用它代替您的元數據,我認為是android:name造成了問題。 不確定,但是請嘗試一次,也許會有用。 我還為gps.add添加了一個標簽。

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

您在這里有錯字:

<meta-data
    android:name="com.google.android.maps.v2.API Key"
    android:value="--- the key ---" />

它應該是:

    android:name="com.google.android.maps.v2.API_KEY"

另外,請勿在公共論壇上發布您的API密鑰! 應該是私人的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM