android.view.InflateException关于包含片段的setContentView布局



在制作应用程序时,我意识到我使用了一个片段类而不是活动,但我没有重新启动,而是制作了一个新的XML布局文件,并将其放入片段组件中。现在,当我在该布局上调用setContentView时,我的应用程序崩溃了,有没有办法让我仍然使用这个片段类,或者我需要用一个Activity类重新启动?

这是XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.redacted.redacted.ui.pSelect.pSelect"
tools:layout="@layout/p_select"
/>
</LinearLayout>

任何帮助都将不胜感激。

p_select:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res      /android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Selection Page"
android:layout_margin="10dp"
android:textColor="#FFFFFF"
android:textSize="22dp"
android:textStyle="bold"
android:id="@+id/title"/>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:id="@+id/select_RV"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@+id/select_RV">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="id 1"
android:onClick="button1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="id 2"
android:onClick="button2"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="id 3"
android:onClick="button3"/>
</LinearLayout>

</RelativeLayout>

这是错误消息:

E/AndroidRuntime:致命异常:main流程:com.redected.pnews,PID:10863java.lang.IollegalStateException:无法执行android的方法:onClick位于androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewExplater.java:390)在android.view.view.performClick(view.java:7125)在android.view.view.performClickInternal(view.java:7102)在android.view.view.access$3500(view.java:801)在android.view.view$PerformClick.run(view.java:27336)在android.os.Handler.handleCallback(Handler.java:883)在android.os.Handler.dispatchMessage(Handler.java:100)在android.os.Looper.loop(Looper.java:214)在android.app.ActivityThread.main(ActivityThreads.java:7356)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:930)引起原因:java.lang.reflect.InvocationTargetException位于java.lang.reflect.Method.ioke(本机方法)位于androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewExplater.java:385)在android.view.view.performClick(view.java:7125)在android.view.view.performClickInternal(view.java:7102)在android.view.view.access$3500(view.java:801)在android.view.view$PerformClick.run(view.java:27336)在android.os.Handler.handleCallback(Handler.java:883)在android.os.Handler.dispatchMessage(Handler.java:100)在android.os.Looper.loop(Looper.java:214)在android.app.ActivityThread.main(ActivityThreads.java:7356)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:930)由以下原因引起:android.view.InflateException:com.redated.pnews:layout/p_frage:com.redated.pnews:layout/p_frager:扩展类片段时出错引起原因:android.view.InflateException:com.redated.pnews:layout/p_frage:扩展类片段时出错由以下原因引起:java.lang.IllegalArgumentException:二进制XML文件第8行:必须指定唯一的android:id、android:tag,或者具有com.redected.pnews.ui.pSelect.pSelect的id的父级位于androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3717)位于androidx.fragment.app.FragmentController.onCreateView(FragmentControll.java:120)位于androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivition.java:405)位于androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:387)在android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1069)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)在android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)在android.view.LayoutInflater.inflature(LayoutInflater.java:682)在android.view.LayoutInflater.inflature(LayoutInflater.java:534)在android.view.LayoutInflater.inflature(LayoutInflater.java:481)位于androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDeleateImpl.java:469)位于androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)网址:com.redated.pnews.MainActivity.backBTN(MainActivity.java:91)位于java.lang.reflect.Method.ioke(本机方法)位于androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewExplater.java:385)在android.view.view.performClick(view.java:7125)在android.view.view.performClickInternal(view.java:7102)在android.view.view.access$3500(view.java:801)在android.view.view$PerformClick.run(view.java:27336)在android.os.Handler.handleCallback(Handler.java:883)在android.os.Handler.dispatchMessage(Handler.java:100)在android.os.Looper.loop(Looper.java:214)在android.app.ActivityThread.main(ActivityThreads.java:7356)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:930)

由于个人原因,我宁愿不发布类代码

onCreateView是在MainActivity类的onclick侦听器中调用的,而fragment类的主要用途是在p_select中填充recyclerview,所以我不认为fragment类别代码会影响这个错误。

错误消息显示

膨胀类片段时出错,原因是:java.lang.IllegalArgumentException:二进制XML文件第8行:必须为com.redected.pnews.ui.pelect.pSelect指定唯一的android:id、android:tag或具有id的父级

所以在<fragment>:中添加一个android:id

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/select_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.redacted.redacted.ui.pSelect.pSelect"
tools:layout="@layout/p_select"
/>
</LinearLayout>

事实证明这是我创建的类中的一个错误,感谢您的帮助,但答案似乎与问题无关。

最新更新