Fragment Transaction实例化错误:点击切换Fragment时应用闪退求助
问题根因
从崩溃日志可以直接定位到问题触发点:你在加载WritePost_Step2_Fragment的布局文件fragment_write_post_step2.xml时出现错误,系统找不到你在布局中声明的WritePost1_Fragment类。
具体排查步骤
- 优先检查
fragment_write_post_step2.xml第6行的<fragment>静态标签- 你在该标签的
android:name属性中填写的类名是错误的,误写为不存在的WritePost1_Fragment,和你实际定义的Step1 Fragment类名WritePost_Step1_Fragment不一致,直接修改为正确的全类名com.example.illo.WritePost_Step1_Fragment即可。 - 额外建议:如果你的业务是需要动态切换Fragment,不要在布局中使用静态
<fragment>标签,改为用空FrameLayout作为容器,通过childFragmentManager执行动态事务即可,避免后续类名修改、包变更时再次出现同类问题。
- 你在该标签的
- 确认Fragment包依赖统一
- 检查所有Fragment的父类路径,确保全部继承自
androidx.fragment.app.Fragment,不要混用Android系统原生的android.app.Fragment,两类Fragment的加载器不互通,混用也会触发类找不到的异常。
- 检查所有Fragment的父类路径,确保全部继承自
- 确认类定义符合要求
- 检查
WritePost_Step1_Fragment的类声明:确保类是公开的(Kotlin默认class为公开权限,无需额外添加public修饰)、存在无参构造方法(Kotlin默认生成无参构造,只要你没有自定义带参数的主构造函数即可,当前代码符合要求)、类确实放在com.example.illo包下没有路径错误。
- 检查
你之前添加的newInstance方法本身写法没有问题,只是你当前在ShowStep2方法中并没有调用该方法实例化Fragment,直接用无参构造创建实例也是符合要求的,不影响运行。
内容的提问来源于stack exchange,提问作者Yuhyun
相关产品推荐
相关产品推荐

