Android Studio中Fragment默认构造器弃用及兼容问题求助
问题分析与解决
嘿,这个问题其实很好搞定,核心原因就是你两个Fragment用了不同版本的API库,导致和Activity里的FragmentManager不兼容:
为什么会报错?
- 你的
ControlFragment导入的是AndroidX版本的Fragment:import androidx.fragment.app.Fragment;,这是当前Android开发推荐使用的新库。 - 而
AndresFragment导入的是旧版原生Fragment:import android.app.Fragment;,这个API已经被官方弃用,所以会弹出“默认构造器已弃用”的提示。 - 你的
MainActivity用的是getSupportFragmentManager(),这个方法属于AndroidX组件,只能管理AndroidX版本的Fragment,自然无法识别旧版的AndresFragment,因此编译报错。
修复步骤
只需要修改AndresFragment的导入语句,把旧版Fragment换成AndroidX版本即可:
修改前:
import android.app.Fragment;
修改后:
import androidx.fragment.app.Fragment;
修改完成后,两个Fragment就统一使用AndroidX的Fragment API了,和getSupportFragmentManager()完美兼容,两个报错都会消失。
另外补充一点:AndroidX的Fragment不需要手动编写默认构造器,系统会自动处理,所以你可以去掉显式的构造器代码(如果有的话),让代码更简洁。
内容的提问来源于stack exchange,提问作者Josef
相关产品推荐
相关产品推荐

