当前位置: 首页 > 知识库问答 >
问题:

Android.view.InflateException-找不到原因

申浩广
2023-03-14

这是我的片段inputtext_fragment.xml:

<?xml version="1.0" encoding="utf-8"?>
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/inputtextfragm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/inputtext_layout"
        android:visibility="invisible"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        ...>

        ...

    </LinearLayout>
</fragment>

Java中的inputText片段:

package de.company.android.inputtext;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class InputTextFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        try {
            return inflater.inflate(R.layout.inputtext_fragment, container, false);
        }
        catch (Throwable t) {
            t.printStackTrace();
            return null;
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout"
    tools:context="de.company.android.testview.MainActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000">

    ...

    <fragment
        android:id="@+id/console"
        android:name="de.company.android.inputtext.InputTextFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>

原因:java.lang.IllegalStateException:Fragment de.company.android.inputtext.InputTextFragment没有创建视图。在Android.app.fragmentManagerimpl.oncreateView(fragmentManager.java:2253),在Android.app.fragmentController.oncreateView(fragmentController.java:99),在Android.app.activity.oncreateView(activity.java:6085),在Android.view.layoutInflater.createView(activity.java:766),在Android.view.layoutInflater.createView(在Android.view.layoutinflater.rinflate(layoutinflater.java:847) 在Android.view.layoutinflater.rinflateChildren(layoutinflater.java:810) 在Android.view.layoutinflater.inflate(layoutinflater.java:527) 在Android.view.layoutinflater.inflate(layoutinflater.java:429) 在Android.view.layoutinflater.inflate(Layoutinflater.java:380) 位于com.android.internal.policy.phoneWindow.setContentView(phoneWindow.java:479) 在Android.app.activity.SetContentView(activity.java:2400) 在de.company.android.testview.mainactivity.oncreate(mainactivity.java:1697) 在Android.app.activity.performCreate(activity.java:6904) 在Android.app.instrumentation.callActivityonCreate(instrumentation.java:1136) 在Android.app.activitythread.performLaunchActivity(activitythread.java:3266) 在Android.app.activitythread.HandleLaunchActivity(activitythread.java:3415) 在Android.app.activitythread.access$1100(activitythread.java:229) 在Android.app.activitythread$h.handleMessage(activitythread.java:1821) 在Android.os.handler.DispatchMessage(Handler.java:102) 在Android.os.looper.loop(looper.java:148) 在Android.app.activitythread.main(activitythread.java:7325) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1230) 在com.android.internal.os.zygoteinit.main(zygoteinit.java:1120) 

这是在catch中记录的错误:

W/System.err: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class fragment
W/System.err:     at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
W/System.err:     at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
W/System.err:     at de.company.android.inputtext.InputTextFragment.onCreateView(InputTextFragment.java:23)
W/System.err:     at android.app.Fragment.performCreateView(Fragment.java:2281)
W/System.err:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
W/System.err:     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1142)
W/System.err:     at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1246)
W/System.err:     at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2223)
W/System.err:     at android.app.FragmentController.onCreateView(FragmentController.java:99)
W/System.err:     at android.app.Activity.onCreateView(Activity.java:6085)
W/System.err:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
W/System.err:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
W/System.err:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
W/System.err:     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
W/System.err:     at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
...
W/System.err: Caused by: java.lang.NullPointerException
W/System.err:     at java.lang.VMClassLoader.findLoadedClass(Native Method)
W/System.err:     at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:362)
W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:499)
W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
W/System.err:     at android.app.Fragment.instantiate(Fragment.java:620)
W/System.err:     at android.app.Fragment.instantiate(Fragment.java:598)
W/System.err:     at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2214)
W/System.err:     at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:192)
W/System.err:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
W/System.err:   ... 33 more

我找不出哪里出了问题。活动和片段在不同的模块中,但是所有的配置都是正确的,以便正确引用de.company.android.inputtextUTIL。

共有1个答案

袁飞鹏
2023-03-14

您的input_text_fragment.xml不应位于片段标记内。它应该在适当类型的布局内。fragment标记只出现在main_activity.xml中,您希望片段出现的地方。

 类似资料:
  • 我正试图打开我的应用程序,但这是一个错误的膨胀 日志: 它拉出错误的片段行: 这段代码在一个条目片段中,我正在使用firebase实现一个登录 就在我的startActivity下面,我有一个“finish()”,但由于我在一个片段中,我必须删除它,我不知道如果没有这个方法,问题是否会出现

  • 问题内容: 错误: 出现的内容不起作用: 如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。 如果我尝试更改boven类中的“}”符号并将其放置在文本的末尾,那么我什至会收到更多错误消息。 问题: 我必须在代码中进行哪些更改才能使其正常工作? 注意: 我是Java的新手,我知道有更多类似这样的文章,但是由于

  • 我有一个已经运行了几周的Kubernetes1.11集群。今天我注意到: null

  • 我试图用Mac M1在Android studio Arctic fox 2020.3.1中构建基于Dagger2的Android项目,但我遇到了错误, 错误:找不到符号导入xxxx.com.xxxx.di。DaggerAppComponent;^符号:类别DaggerAppComponent 这也显示了 原因:java.lang.异常 同一个项目在另一台机器上工作(不是mac)。 此外,我无法在

  • 我对Android-Studio是新手,我正试图让一个“旧”应用程序重新运行。当我将Project与Gradle文件同步时,它会向我显示一条错误消息: 我还将google()和mavenCentral()添加到存储库中,但这并没有帮助。

  • 遇到这个问题的人都无法解决配置':react-native-fast-image:classpath'的所有工件,并且找不到com.android.tools.build:gradle:3.6.3?我试着打开项目结构,看到gradle插件工具是3.6.3,而gradle版本是5.4.6,但我不知道现在发生了什么 build.gradle文件: