目前项目在很早以前转androidx,这次依赖第三方库是Android版本的,依赖进来很顺利,不过在退出使用第三方库页面闪退了,报错
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.fragment.app.FragmentManager.isDestroyed()' on a null object reference
看来又是android和androidx库间的问题,网上查相关报错,一般都是自己在fragment页面重写onDetach()方法,导致fragment的mChildFragmentManager被置空,于是在销毁fragment时候空指针。
排查发现我并没有重写fragment的onDetach()方法,因为我们使用的就是第三方库里面的fragment,而第三方库是android的,看来是gradle.properties文件中 android.enableJetifier=true
导致的,自动把第三方android的转成androidx,解决办法:
在工程build.gradle文件allprojects下添加
//全项目升级androidx
configurations.all {
resolutionStrategy.eachDependency { details ->
def requested = details.requested
if (requested.group == 'androidx.appcompat') {
details.useVersion '1.1.0'
} else if (requested.group == 'androidx.fragment') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '1.1.0-alpha08'
}
}
}
}