androidx.fragment.app.Fragment 加载报错

错误内容如下

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.xxx, PID: 15570
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.xxx/com.android.xxx.XXXActivity}:
android.view.InflateException: Binary XML file line #9 in com.android.xxx/xxxx_fragment_layout:
Binary XML file line #9 in com.android.xxx/xxxx_fragment_layout:
Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3323)
… …

原因分析

看报错内容,还以为是xml文件有问题:
xxxx_fragment_layout:Binary XML file line #9
在这里插入图片描述
其实,这一行并没有问题,xml文件也没问题。

查资料

网上查资料,给出的很多方法都是很类似的,就是修改Fragment的引用包:
1)import android.app.Fragment; —> import android.support.v4.app.Fragment;
2)android:name=“com.android.xxx.xxxxFragment” 检查该路径对不对。

这应该是以前的解决方法。

印证

不过我用的Fragment的包名是androidx的:
androidx.fragment.app.Fragment;

而且android.support.v4.app 已经找不到Fragment了。

解决方法

你调用Fragment的Activity继承的父类不要再使用Activity,即
public class XXXActivity extends Activity

要修改为以下:
1)public class XXXActivity extends FragmentActivity
2)public class XXXActivity extends AppCompatActivity
这样修改,再运行程序就OK了。

为啥两个都可以呢?其实
public class AppCompatActivity extends FragmentActivity

参考博客

1)https://blog.csdn.net/downanddusk/article/details/109230922
2)https://blog.csdn.net/songyachao/article/details/51261748
感谢两位大佬的博客。


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐