无法找到课程' com.google.android.gms.maps.MapFragment'

时间:2014-07-07 15:17:16

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

我知道有很多类似这样的问题,我搜索了所有可能的内容,但我无法找到答案。所以,我认为我做得很好,但它仍然给我这个错误。

main.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" >

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

</RelativeLayout>

MainActivity.java:

package com.davidmilicevic97.testapp;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;

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

public class MainActivity extends Activity {

private GoogleMap googleMap;

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

    try {
        initializeMap();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onResume() {
    super.onResume();
    initializeMap();
}

private void initializeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMap();

        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! Unable to create maps.", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

}

的AndroidManifest.xml:

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

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="15" />

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

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

<!-- Required to show current location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- Required OpenGL ES 2.0. for Maps v2 -->
<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" >
    <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>

    <!-- Google API key -->
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="myKey" />
    <!-- Play services version -->
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
</application>

这是我的日志,如果需要的话:

    07-07 16:29:22.502: E/Trace(8412): error opening trace file: No such file or directory (2)
07-07 16:29:22.502: E/dalvikvm(8412): Could not find class 'com.google.android.gms.maps.MapFragment', referenced from method com.davidmilicevic97.testapp.MainActivity.initializeMap
07-07 16:29:22.502: W/dalvikvm(8412): VFY: unable to resolve check-cast 929 (Lcom/google/android/gms/maps/MapFragment;) in Lcom/davidmilicevic97/testapp/MainActivity;
07-07 16:29:22.502: D/dalvikvm(8412): VFY: replacing opcode 0x1f at 0x000f
07-07 16:29:23.502: E/ActivityThread(8412): Failed to inflate
07-07 16:29:23.502: E/ActivityThread(8412): android.view.InflateException: Binary XML file line #6: Error inflating class fragment
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
07-07 16:29:23.502: E/ActivityThread(8412):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:275)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Activity.setContentView(Activity.java:1867)
07-07 16:29:23.502: E/ActivityThread(8412):     at com.davidmilicevic97.testapp.MainActivity.onCreate(MainActivity.java:17)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Activity.performCreate(Activity.java:5008)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.ActivityThread.access$600(ActivityThread.java:142)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.os.Looper.loop(Looper.java:137)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.ActivityThread.main(ActivityThread.java:4931)
07-07 16:29:23.502: E/ActivityThread(8412):     at java.lang.reflect.Method.invokeNative(Native Method)
07-07 16:29:23.502: E/ActivityThread(8412):     at java.lang.reflect.Method.invoke(Method.java:511)
07-07 16:29:23.502: E/ActivityThread(8412):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
07-07 16:29:23.502: E/ActivityThread(8412):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
07-07 16:29:23.502: E/ActivityThread(8412):     at dalvik.system.NativeStart.main(Native Method)
07-07 16:29:23.502: E/ActivityThread(8412): 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
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Fragment.instantiate(Fragment.java:584)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Fragment.instantiate(Fragment.java:552)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Activity.onCreateView(Activity.java:4656)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
07-07 16:29:23.502: E/ActivityThread(8412):     ... 21 more
07-07 16:29:23.502: E/ActivityThread(8412): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
07-07 16:29:23.502: E/ActivityThread(8412):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-07 16:29:23.502: E/ActivityThread(8412):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-07 16:29:23.502: E/ActivityThread(8412):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-07 16:29:23.502: E/ActivityThread(8412):     at android.app.Fragment.instantiate(Fragment.java:574)
07-07 16:29:23.502: E/ActivityThread(8412):     ... 24 more
07-07 16:29:23.502: D/AndroidRuntime(8412): Shutting down VM
07-07 16:29:23.502: W/dalvikvm(8412): threadid=1: thread exiting with uncaught exception (group=0x2b54a300)
07-07 16:29:23.502: E/AndroidRuntime(8412): FATAL EXCEPTION: main
07-07 16:29:23.502: E/AndroidRuntime(8412): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.davidmilicevic97.testapp/com.davidmilicevic97.testapp.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread.access$600(ActivityThread.java:142)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.os.Looper.loop(Looper.java:137)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread.main(ActivityThread.java:4931)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at java.lang.reflect.Method.invokeNative(Native Method)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at java.lang.reflect.Method.invoke(Method.java:511)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at dalvik.system.NativeStart.main(Native Method)
07-07 16:29:23.502: E/AndroidRuntime(8412): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:275)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Activity.setContentView(Activity.java:1867)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at com.davidmilicevic97.testapp.MainActivity.onCreate(MainActivity.java:17)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Activity.performCreate(Activity.java:5008)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139)
07-07 16:29:23.502: E/AndroidRuntime(8412):     ... 11 more
07-07 16:29:23.502: E/AndroidRuntime(8412): 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
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Fragment.instantiate(Fragment.java:584)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Fragment.instantiate(Fragment.java:552)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Activity.onCreateView(Activity.java:4656)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
07-07 16:29:23.502: E/AndroidRuntime(8412):     ... 21 more
07-07 16:29:23.502: E/AndroidRuntime(8412): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
07-07 16:29:23.502: E/AndroidRuntime(8412):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-07 16:29:23.502: E/AndroidRuntime(8412):     at android.app.Fragment.instantiate(Fragment.java:574)
07-07 16:29:23.502: E/AndroidRuntime(8412):     ... 24 more

我通过Eclipse导入了google-play-services_lib,并将其用作我项目的库。我想我不必使用SupportMapFragment,因为我的MinSdkVersion是14.此外,我在我的清单中添加了Google Play服务版本和API密钥,我想我添加了所有权限,所以我真的不知道问题出在哪里。

如果有人能查看我的问题,我将非常感激。

1 个答案:

答案 0 :(得分:0)

这是一个更多的评论,但我还不能评论,所以这里是:

在谷歌地图的v2中,您不需要以下几行:

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

我没有发现您的代码有任何问题(即使使用上述代码也应该运行,它们会被忽略)。

这很可能是一个Eclipse问题。以下是根据我的经验,你可能想试一试:

首先,做一个&#39;清洁&#39;并建立。 其次,在项目的属性&gt; Android中,选择Google API并应用,然后更改为Android API并再次申请。

我曾经多次遇到过我的项目无法正确构建的问题,但执行上述操作似乎会重置“#”。您甚至可能想要重新启动Eclipse。