"inferred type is FragmentManager? but FragmentManager was expected" 移动到 androidX 后出错

"inferred type is FragmentManager? but FragmentManager was expected" error after moving to androidX

我刚刚将我的项目移至 androidX。我使用 android studio 重构->升级到 androidX。 TargetSDK 已经 28 并且运行良好。所以没想到会有很多错误。但是我错了,得到了很多错误,其中大部分是关于 fragmentManager

inferred type is FragmentManager? but FragmentManager was expected

这是我在片段中调用自定义 bottomSheetDialogue 的 show 方法的时候。

bottomDialog.newInstance(//options here
                  ).show(fragmentManager, bottomDialog.TAG)

该方法被注释为 Nullable。改成这样

fragmentManager?.let { manager ->
    bottomDialog.newInstance(//options here
              ).show(manager, bottomDialog.TAG)
}

确保导入 androidx.fragment.app.FragmentManager 而不是 android.app.FragmentManager

我最终使用了 parentFrgamentManager,它解决了这个问题。我尝试使用 supportFragmentManager 但无法识别,因此使用了 parentFragmentManager。这是我使用的代码。

bottomDialog.newInstance(//options here
                  ).show(parentFragmentManager, bottomDialog.TAG)