Android Studio:膨胀类片段时出错

Posted

技术标签:

【中文标题】Android Studio:膨胀类片段时出错【英文标题】:Android Studio : Error inflating class fragment 【发布时间】:2016-09-14 07:10:23 【问题描述】:

我正在编写一个包含谷歌地图片段的安卓应用程序。当我从它所包含的活动中排除地图片段时,应用程序运行良好。当我包含地图片段时,我得到下面块引用中引用的异常。最烦人的部分是,就在几周前,这还没有发生。这项活动在几周内运行得非常好,然后我更新了 android studio,现在我遇到了这个异常。我在 google 和 *** 上的几个线程中搜索了解决方案,但没有任何效果。我什至尝试直接复制并粘贴 google android 演示以进行地图活动,但我得到了同样的例外。请帮忙。

引发的异常(从 android 监视器复制):

致命异常:主要 进程:com.androidapps.seanmcalinden.firstandroidapp,PID:23089 java.lang.RuntimeException:无法启动活动 ComponentInfocom.androidapps.seanmcalinden.firstandroidapp/com.androidapps.seanmcalinden.firstandroidapp.MapsActivity:android.view.InflateException:二进制 XML 文件第 55 行:二进制 XML 文件第 55 行: 膨胀类片段时出错 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.view.InflateException:二进制 XML 文件第 55 行:二进制 XML 文件第 55 行:膨胀类片段时出错 在 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 在 android.app.Activity.setContentView(Activity.java:2166) 在 com.androidapps.seanmcalinden.firstandroidapp.MapsActivity.onCreate(MapsActivity.java:67) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:android.view.InflateException:二进制 XML 文件第 55 行:膨胀类片段时出错 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 在 android.app.Activity.setContentView(Activity.java:2166) 在 com.androidapps.seanmcalinden.firstandroidapp.MapsActivity.onCreate(MapsActivity.java:67) 在 android.app.Activity.performCreate(Activity.java:6237) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean java.io.File.mkdir()” 在 com.google.maps.api.android.lib6.gmm6.m.ad.a(未知来源) 在 com.google.maps.api.android.lib6.gmm6.c.h.a(未知来源) 在 com.google.maps.api.android.lib6.gmm6.c.y.a(未​​知来源) 在 com.google.maps.api.android.lib6.e.bd.a(未知来源) 在 com.google.maps.api.android.lib6.e.ev.a(未知来源) 在 com.google.maps.api.android.lib6.e.z.a(未知来源) 在 com.google.maps.api.android.lib6.e.y.a(未​​知来源) 在 com.google.android.gms.maps.internal.u.onTransact(SourceFile:107) 在 android.os.Binder.transact(Binder.java:387) 在 com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(未知来源) 在 com.google.android.gms.maps.MapFragment$zza.onCreateView(未知来源) 在 com.google.android.gms.dynamic.zza$4.zzb(未知来源) 在 com.google.android.gms.dynamic.zza.zza(未知来源) 在 com.google.android.gms.dynamic.zza.onCreateView(未知来源) 在 com.google.android.gms.maps.MapFragment.onCreateView(未知来源) 在 android.app.Fragment.performCreateView(Fragment.java:2220) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:949) 在 android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) 在 android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1228) 在 android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2201) 在 android.app.FragmentController.onCreateView(FragmentController.java:98) 在 android.app.Activity.onCreateView(Activity.java:5546) 在 android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:34) 在 android.support.v4.app.FragmentActivity.onCreat

OnCreate 方法:

    protected void onCreate(Bundle savedInstanceState) 
    Log.e("success", "entered onCreate in MapsActivity");

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    MapFragment mapFragment =
            (MapFragment) getFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    if (locationGAC == null) 
        // ATTENTION: This "addApi(AppIndex.API)"was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        locationGAC = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .addApi(AppIndex.API).build();
        Log.e("success", "created locationGAC");
    

    Log.d("myTag", "test output 1");

    createFriendList();


此活动的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@color/colorPrimary"
android:weightSum="1" >

<RelativeLayout
    android:layout_
    android:layout_
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" >

    <Button
        android:layout_
        android:layout_
        android:text="Back"
        android:id="@+id/button"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignBottom="@+id/SearchBar1"
        android:onClick="backToLogin"
        android:background="@color/colorPrimaryDark"
        android:textColor="#ffffff" />

    <EditText
        android:layout_
        android:layout_
        android:id="@+id/SearchBar1"
        android:layout_alignParentTop="true"
        android:hint="Search"
        android:layout_alignParentEnd="false"
        android:layout_alignParentStart="false"
        android:layout_toEndOf="@id/button"
        android:layout_toStartOf="@+id/SearchButton"
        android:textColor="#ffffff"
        android:textColorHint="#ffffff" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_
        android:layout_
        android:text="Go"
        android:id="@+id/SearchButton"
        android:layout_alignParentRight="true"
        android:enabled="true"
        android:onClick="onSearch"
        android:textColor="#ffffff"
        android:background="@color/colorPrimaryDark" />

</RelativeLayout>

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:layout_
android:layout_
    tools:context=".MapsActivity"
class="com.google.android.gms.maps.MapFragment" />


<RelativeLayout
    android:layout_
    android:layout_
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">

    <Button
        android:layout_
        android:layout_
        android:text="Retrieve"
        android:id="@+id/serverRetrieveButton"
        android:layout_gravity="left"
        android:textColor="#ffffff"
        android:onClick="getLocationFromDexelus"
        android:background="@color/colorPrimaryDark" />

    <Button
        android:layout_
        android:layout_
        android:text="Send"
        android:id="@+id/serverSendButton"
        android:layout_alignParentRight="true"
        android:textColor="#ffffff"
        android:onClick="sendLocationToDexelus"
        android:background="@color/colorPrimaryDark" />

</RelativeLayout>

</RelativeLayout>

如上所述,我已经尝试了许多在 *** 上找到的解决方案。并不是说您不应该再次发布这些内容,而是我认为我的问题可能比那些更复杂或更具体,因为没有一个给定的解决方案对我有用。

谢谢。

【问题讨论】:

提供您已经检查过的帖子,这样其他人就不会尝试复制它。您提到这是在更新 AS 后发生的,您的 google-play-services 的当前版本是什么?可以发布你的 gradle 吗? 检查此 SO 问题 17469661 和 15703245 中的代码是否可以帮助您。尝试使用 SupportMapFragment 而不仅仅是 MapFragment。 【参考方案1】:

由于某种原因,当我将我的 sdk 更新到周三发布的版本时,我的问题消失了。我想这是合适的,因为问题在 android studio 更新后首次出现。感谢您的建议!

【讨论】:

【参考方案2】:

我认为错误来自class="com.google.android.gms.maps.MapFragment" 可能路径不正确。

【讨论】:

以上是关于Android Studio:膨胀类片段时出错的主要内容,如果未能解决你的问题,请参考以下文章

Android android.view.InflateException Binary XML 文件第 16 行:膨胀类片段时出错

膨胀类片段时出错

android.view.InflateException:二进制 XML 文件:膨胀类片段时出错

android.view.InflateException 膨胀类片段时出错,二进制 XML 文件第 1 行?

android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错

Google Map API 问题:android.view.InflateException:二进制 XML 文件第 2 行:二进制 XML 文件第 2 行:膨胀类片段时出错