我知道有很多类似这样的问题,我搜索了所有可能的内容,但我无法找到答案。所以,我认为我做得很好,但它仍然给我这个错误。
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密钥,我想我添加了所有权限,所以我真的不知道问题出在哪里。
如果有人能查看我的问题,我将非常感激。
答案 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。