【问题标题】:FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo致命异常:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo
【发布时间】:2013-05-08 10:48:58
【问题描述】:

我正在使用 android API v2 处理地图视图,我正在关注 this tutorial,我已经按照他在教程中解释的内容进行操作,但我仍然遇到致命异常。这是我的带有日志猫的 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

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

</RelativeLayout>

日志猫:

05-08 10:38:22.121: E/AndroidRuntime(954): FATAL EXCEPTION: main
05-08 10:38:22.121: E/AndroidRuntime(954): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map/com.example.map.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.os.Looper.loop(Looper.java:137)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread.main(ActivityThread.java:5041)
05-08 10:38:22.121: E/AndroidRuntime(954):  at java.lang.reflect.Method.invokeNative(Native Method)
05-08 10:38:22.121: E/AndroidRuntime(954):  at java.lang.reflect.Method.invoke(Method.java:511)
05-08 10:38:22.121: E/AndroidRuntime(954):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-08 10:38:22.121: E/AndroidRuntime(954):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-08 10:38:22.121: E/AndroidRuntime(954):  at dalvik.system.NativeStart.main(Native Method)
05-08 10:38:22.121: E/AndroidRuntime(954): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
05-08 10:38:22.121: E/AndroidRuntime(954):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Activity.setContentView(Activity.java:1881)
05-08 10:38:22.121: E/AndroidRuntime(954):  at com.example.map.MainActivity.onCreate(MainActivity.java:12)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Activity.performCreate(Activity.java:5104)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-08 10:38:22.121: E/AndroidRuntime(954):  ... 11 more
05-08 10:38:22.121: E/AndroidRuntime(954): 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
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Fragment.instantiate(Fragment.java:592)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Fragment.instantiate(Fragment.java:560)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Activity.onCreateView(Activity.java:4709)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
05-08 10:38:22.121: E/AndroidRuntime(954):  ... 21 more
05-08 10:38:22.121: E/AndroidRuntime(954): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.MapFragment" on path: /data/app/com.example.map-2.apk
05-08 10:38:22.121: E/AndroidRuntime(954):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
05-08 10:38:22.121: E/AndroidRuntime(954):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-08 10:38:22.121: E/AndroidRuntime(954):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-08 10:38:22.121: E/AndroidRuntime(954):  at android.app.Fragment.instantiate(Fragment.java:582)
05-08 10:38:22.121: E/AndroidRuntime(954):  ... 24 more

我的清单是这样的。

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

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

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

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-permission android:name="com.example.map.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" >
        <activity
            android:name="com.example.map.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="AIzaSyDSW0CfwDN0LyrF8PBeihEjrAkj25TDhUQ" />
    </application>

</manifest>

【问题讨论】:

    标签: android google-maps map


    【解决方案1】:

    您正在尝试将现有项目导入库。您应该使用以下方法导入库。

    1. 右键单击包资源管理器。导入 -> 展开 Android -> 现有 Android 代码到工作区。
    2. 选择 google-play-services 库。并检查副本 工作区复选框。

    一旦完成。引用库项目

    右键单击项目。在左侧窗格中选择 Android。在右窗格底部,您会看到一个带有标签库的框架。点击添加,添加导入的库。

    要将支持库添加到您的项目: 右键单击项目 Androids Tools -> 添加支持库。

    如果您决定使用支持库,则必须替换代码

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

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

    在您的 java 文件中,您还必须使用 SupportMapFragment。

    mMap = ((SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.map)).getMap();
    

    【讨论】:

    • 是的,你的,是正确的,但我仍然得到这个 05-08 15:09:47.814:W/GooglePlayServicesUtil(1790):Google Play 服务已过期。需要 3027100 但找到 2012110
    • 您是否尝试在模拟器上运行应用程序?
    • @yeah,现在运行起来就像一个魅力......我刚刚将我的 Google Play 服务版本 6 替换为版本 4。
    【解决方案2】:

    确保您在项目构建目标中使用 Google API。转到项目属性> Android 进行检查。

    【讨论】:

    • 在我的项目属性> Android 中没有库,但我安装了 google-play-services。
    • 您应该安装 Google API。按照此链接的第 1 步和第 2 步操作。 shashikawlp.wordpress.com/2012/09/19/…
    【解决方案3】:

    您是否在 Eclipse 中使用了正确的 API(GOOGLE API)?如果您想在 android 中使用谷歌地图,请务必使用 GOOGLE API!

    【讨论】:

    • @user1396042 为此,请右键单击项目 -> 属性 -> Android
    • @Bigflow.. 我也试过你的.. 而且我使用了正确的 API
    【解决方案4】:

    您可能遇到了导入问题。只需右击project -&gt; properties -&gt; Java build path 签入您已导入库。请参阅this link 以了解清楚

    【讨论】:

      【解决方案5】:

      此错误通常是由于对 google-play-services 库的错误引用造成的。

      要正确执行此操作,请按照我在您的应用程序中集成 Google Maps API V2 所写的这篇博文指南的前 3 个步骤操作:

      Google Maps API V2

      【讨论】:

      • 我已经看到了我的 google-play-services 通过导入,就像您的链接中解释的第二步一样。但他们不是地图项目。
      • 你是什么意思:但他们不是地图项目?
      • 当我尝试在这里导入 lib, sdk\extras\google\google_play_services\libproject\google-play-services_lib 时,我收到消息 No projects are found to import.
      • 所以这是你的问题。尝试使用 SDK 管理器下载/重新下载 google-play-service 包并再次执行此步骤。没有它,您的应用程序将无法运行
      • 但是我通过 SDK Manager 安装了几次,但仍然没有显示,有什么解决方案吗???
      【解决方案6】:
      ""Caused by: java.lang.ClassNotFoundException: Didn't find class"com.google.android.gms.maps.MapFragment" on path: /data/app/com.example.map-2.apk""
      

      你检查过这个吗?

      我认为你应该在你的 AndroidManifest.XML 中添加这个 (com.google.android.gms.maps.MapFragment)ACTIVITY。

      尝试一下 LogCat 中的三个“由...引起”的错误。

      【讨论】:

      • 那你应该认真研究这个!! " android.view.InflateException: Binary XML file line #11: Error inflating class fragment"
      • 也尝试:1.) 添加 -> 2) 从“MapActivity”而不是 Activity 扩展您的 Activity。
      • 我还观察到您正在使用“minSdkVersion="8"”。为此,请尝试为“android.support.v4.app”而不是“android.app.Fragment”等片段添加 android 支持文件
      • 我在清单中添加了 ,但出现了这个错误,安装错误:INSTALL_FAILED_MISSING_SHARED_LIBRARY
      • 好吧,就是这样,你只需彻底浏览“developers.google.com/maps/documentation/android/#avdsetup”这个网站。
      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 2014-05-17
      • 1970-01-01
      • 2013-12-22
      • 2013-12-22
      • 1970-01-01
      • 2019-03-18
      相关资源
      最近更新 更多