【问题标题】:android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragmentandroid.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment
【发布时间】:2016-07-11 23:59:12
【问题描述】:

我刚刚在我的应用程序中实现了我的第 4 个选项卡,该应用程序实现了谷歌地图。在此实现之前,我的应用程序运行良好,现在当我更改选项卡时它崩溃了。我在这里看到过类似的问题,但没有人有答案 LOL(实际上有很多不同的原因和对这个问题的回应)

这里是 fragmenthouts_maps 类

package com.example.hp_user.shoutfinal28;



import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;


public class FragmentShouts_Maps extends Fragment implements OnMapReadyCallback {


public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Get the view from fragment shouts.xml
    View root_view = inflater.inflate(R.layout.fragmentshouts_maps, container, false);
    SupportMapFragment supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.Maps1);
    if (supportMapFragment!= null) {
        supportMapFragment.getMapAsync(this);
    }
    return root_view;
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
}

@Override
public void onMapReady (GoogleMap map) {
    map.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Marker"));
}

}

我的 Fragmentshouts_maps 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/Maps1"
    class="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:layout="@layout/fragmentshouts_maps"
    android:layout_alignParentEnd="true">
</fragment>


</RelativeLayout>

android 清单 xml

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="SHOUT"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="SHOUT"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


</manifest>

查看寻呼机适配器类

package com.example.hp_user.shoutfinal28;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;



public class ViewPagerAdapter extends FragmentStatePagerAdapter {

final int PAGE_COUNT = 4;
// Tab Titles
private String tabtitles[] = new String[] {"Home","Shouts","Maps","Shouters"};
Context context;

public ViewPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public int getCount() {
    return PAGE_COUNT;
}


public Fragment getItem(int position) {
    switch (position) {

        // Open Fragment home.java
        case 0:
            FragmentHome fragmenthome = new FragmentHome();
            return fragmenthome;

        // Open Fragment shouters.java
        case 1:
            FragmentShouts fragmentshouts = new FragmentShouts();
            return fragmentshouts;

        case 2:
            FragmentShouts_Maps fragmentshouts_maps = new FragmentShouts_Maps();
            return fragmentshouts_maps;

        case 3:
            FragmentShouters fragmentshouters = new FragmentShouters();
            return fragmentshouters;



    }
    return null;
}

@Override
public CharSequence getPageTitle(int position) {
    return tabtitles[position];
}


}

这是我的错误日志

_03-24 13:10:44.990 2497-2497/com.example.hp_user.shoutfinal28 I/art:未后期启用 -Xcheck:jni(已启用) 03-24 13:10:45.149 2497-2497/com.example.hp_user.shoutfinal28 W/系统:类加载器引用未知路径:/data/app/com.example.hp_user.shoutfinal28-2/lib/x86 03-24 13:10:45.877 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:32.755ms 03-24 13:10:46.344 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:30.264ms 03-24 13:10:46.841 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:18.578ms 03-24 13:10:46.879 2497-2497/com.example.hp_user.shoutfinal28 I/GMPM:应用程序测量正在启动,版本:8487 03-24 13:10:46.879 2497-2497/com.example.hp_user.shoutfinal28 I/GMPM:启用调试日志运行:adb shell setprop log.tag.GMPM VERBOSE 03-24 13:10:47.126 2497-2497/com.example.hp_user.shoutfinal28 E/GMPM:GoogleService 初始化失败,状态:10,缺少预期的资源:用于初始化 Google 服务的“R.string.google_app_id”。可能的原因是缺少 google-services.json 或 com.google.gms.google-services gradle 插件。 03-24 13:10:47.126 2497-2497/com.example.hp_user.shoutfinal28 E/GMPM:未设置调度程序。不记录错误/警告。 03-24 13:10:47.285 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:10.416ms 03-24 13:10:47.306 2497-2549/com.example.hp_user.shoutfinal28 E/GMPM:无法上传。应用衡量功能已停用 03-24 13:10:48.324 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:56.790ms 03-24 13:10:48.692 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:19.660ms 03-24 13:10:48.735 2497-2571/com.example.hp_user.shoutfinal28 D/OpenGLRenderer: 使用 EGL_SWAP_BEHAVIOR_PRESERVED: true 03-24 13:10:49.214 2497-2571/com.example.hp_user.shoutfinal28 I/OpenGLRenderer:初始化 EGL,版本 1.4 03-24 13:10:49.686 2497-2571/com.example.hp_user.shoutfinal28 W/EGL_emulation:eglSurfaceAttrib 未实现 03-24 13:10:49.686 2497-2571/com.example.hp_user.shoutfinal28 W/OpenGLRenderer:无法在表面 0xac0bfc40 上设置 EGL_SWAP_BEHAVIOR,错误 = EGL_SUCCESS 03-24 13:10:49.713 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:34.869ms 03-24 13:10:50.299 2497-2497/com.example.hp_user.shoutfinal28 I/Choreographer:跳过了 88 帧!应用程序可能在其主线程上做了太多工作。 03-24 13:10:51.354 2497-2497/com.example.hp_user.shoutfinal28 I/Choreographer:跳过了 62 帧!应用程序可能在其主线程上做了太多工作。 03-24 13:10:51.698 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:19.748ms 03-24 13:10:54.816 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:68.575ms 03-24 13:10:55.255 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:56.167ms 03-24 13:10:55.684 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:13.477ms 03-24 13:10:57.162 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:7.253ms 03-24 13:10:58.712 2497-2549/com.example.hp_user.shoutfinal28 I/GMPM:未找到跟踪代码管理器,因此不会使用 03-24 13:10:59.674 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:24.761ms 03-24 13:11:00.056 2497-2497/com.example.hp_user.shoutfinal28 I/zzad:动态制作 Creator 03-24 13:11:00.148 2497-2497/com.example.hp_user.shoutfinal28 W/系统:类加载器引用未知路径:/system/priv-app/PrebuiltGmsCore/lib/x86 03-24 13:11:00.528 2497-2497/com.example.hp_user.shoutfinal28 D/ChimeraCfgMgr:读取存储的模块配置 03-24 13:11:00.560 2497-2508/com.example.hp_user.shoutfinal28 I/art:后台粘性并发标记扫描 GC 释放 7893(582KB) AllocSpace 对象,5(100KB) LOS 对象,13% 可用,3MB/ 3MB,暂停 3.580ms 共 263.471ms 03-24 13:11:00.584 2497-2497/com.example.hp_user.shoutfinal28 D/ChimeraCfgMgr:从 APK /data/user/0/com.google.android.gms 加载模块 com.google.android.gms.maps /app_chimera/chimera-module-root/module-a3e4fba11e705727c59ff3116ef21fa4834b9f56/MapsModule.apk 03-24 13:11:00.595 2497-2497/com.example.hp_user.shoutfinal28 D/ChimeraModuleLdr: 加载模块 APK /data/user/0/com.google.android.gms/app_chimera/chimera-module-root/module -a3e4fba11e705727c59ff3116ef21fa4834b9f56/MapsModule.apk 03-24 13:11:00.781 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:138.569ms 03-24 13:11:00.781 2497-2497/com.example.hp_user.shoutfinal28 D/ChimeraFileApk:请求进程的主要 ABI 是 x86 03-24 13:11:00.783 2497-2497/com.example.hp_user.shoutfinal28 D/ChimeraFileApk:类加载成功。找到优化代码。 03-24 13:11:00.825 2497-2497/com.example.hp_user.shoutfinal28 W/系统:类加载器引用未知路径:/data/user/0/com.google.android.gms/app_chimera/chimera-module-root /module-a3e4fba11e705727c59ff3116ef21fa4834b9f56/native-libs/x86 03-24 13:11:01.134 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:22.116ms 03-24 13:11:01.743 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:81.006 毫秒 03-24 13:11:01.744 2497-2497/com.example.hp_user.shoutfinal28 I/Google Maps Android API:Google Play 服务客户端版本:8487000 03-24 13:11:02.058 2497-2497/com.example.hp_user.shoutfinal28 I/Google Maps Android API:Google Play 服务包版本:8489470 03-24 13:11:02.144 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:35.413ms 03-24 13:11:02.181 2497-2497/com.example.hp_user.shoutfinal28 D/AndroidRuntime: 关闭 VM 03-24 13:11:02.275 2497-2497/com.example.hp_user.shoutfinal28 E/AndroidRuntime: 致命异常: main 进程:com.example.hp_user.shoutfinal28,PID:2497 android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment 在 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 com.example.hp_user.shoutfinal28.FragmentShouts_Maps.onCreateView(FragmentShouts_Maps.java:23) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 在 android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 在 android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1106) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:952) 在 android.support.v4.view.ViewPager$3.run(ViewPager.java:251) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:603) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 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: Binary XML file line #7: Error inflating class fragment 在 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) 在 com.example.hp_user.shoutfinal28.FragmentShouts_Maps.onCreateView(FragmentShouts_Maps.java:23) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 在 android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 在 android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1106) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:952) 在 android.support.v4.view.ViewPager$3.run(ViewPager.java:251) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:603) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 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.RuntimeException:未找到 API 密钥。检查它是否在 AndroidManifest.xml 的元素中 在 com.google.maps.api.android.lib6.c.ad.a(未知来源) 在 com.google.maps.api.android.lib6.a.e.a(未知来源) 在 com.google.android.gms.maps.internal.CreatorImpl.b(未知来源) 在 com.google.android.gms.maps.internal.CreatorImpl.b(未知来源) 在 com.google.android.gms.maps.internal.h.onTransact(SourceFile:62) 在 android.os.Binder.transact(Binder.java:387) 在 com.google.android.gms.maps.internal.ah.b(SourceFile:179) 在 com.google.android.gms.maps.internal.CreatorImpl.b(SourceFile:100) 在 com.google.android.gms.maps.internal.ag.onTransact(SourceFile:62) 在 android.os.Binder.transact(Binder.java:387) 在 com.google.android.gms.maps.internal.zzc$zza$zza.zzs(未知来源) 在 com.google.android.gms.maps.SupportMapFragment$zzb.zzzW(未知来源) 在 com.google.android.gms.maps.SupportMapFragment$zzb.zza(未知来源) 在 com.google.android.gms.dynamic.zza.zza(未知来源) 在 com.google.android.gms.dynamic.zza.onInflate(未知来源) 在 com.google.android.gms.maps.SupportMapFragment.onInflate(未知来源) 在 android.support.v4.app.Fragment.onInflate(Fragment.java:1129) 在 android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2283) 在 android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746) 在 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) 在 com.example.hp_user.shoutfinal28.FragmentShouts_Maps.onCreateView(FragmentShouts_Maps.java:23) 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 在 android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 在 android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1106) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:952) 在 android.support.v4.view.ViewPager$3.run(ViewPager.java:251) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 在 android.view.Choreographer.doCallbacks(Choreographer.java:670) 在 android.view.Choreographer.doFrame(Choreographer.java:603) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 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) 03-24 13:11:13.831 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:21.969ms 03-24 13:11:16.801 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:12.148ms 03-24 13:11:20.740 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:10.787ms 03-24 13:11:42.991 2497-2504/com.example.hp_user.shoutfinal28 W/艺术:暂停所有线程耗时:411.474ms_

【问题讨论】:

  • 可以添加fragmentshouts_maps.xml文件的代码吗?
  • 我的错误我把谷歌地图xml文件我的意思是fragmenthouts_maps xml文件我已经修改了它所以你现在可以看到它@MiguelBenitez
  • 不知道如何正确插入我的原木猫,但将其设置为粗体和斜体

标签: java android xml google-maps android-fragments


【解决方案1】:

尝试在onActivityCreated()中做同样的事情

   public void onActivityCreated(Bundle savedInstanceState) {
                    super.onActivityCreated(savedInstanceState);
                    SupportMapFragment supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.Maps1);
                    if (supportMapFragment!= null) {
                        supportMapFragment.getMapAsync(this);
                    }
                }

【讨论】:

  • 实际上并没有,但我很困惑如何实现这行代码以及它将替换哪一行
  • 基本上,您正在尝试获取尚未膨胀的视图元素。当 R.id.Maps1 可见时,它在 onCreateView 之后
  • 它出现了一个错误不可转换的类型;无法将“android.view.View”转换为“com.google.android.gms.maps.SupportMapFragment
  • 我的错...在 onActivityCreated 中使用您的代码,我将编辑答案
猜你喜欢
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 2020-06-27
  • 1970-01-01
  • 2017-09-13
  • 2013-10-07
相关资源
最近更新 更多