在 RecyclerView 适配器点击事件中使用 fragmentManager

Using fragmentManager in RecyclerView adapter click event

随着 FragmentManager 的弃用,Android Studio 不会为弃用的代码提供任何代码建议。

问题是 fragmentManagerval manager = (holder.itemView.context as Activity).fragmentManager 因为它 returns 这个错误:

'getter for fragmentManager: FragmentManager!' is deprecated. Deprectaed in Java

我已经在使用 import androidx.fragment.app.DialogFragment 但问题仍然没有消失。另外,我已经看过 this question,但不清楚在 Kotlin 中应该使用什么来代替。

holder.myButton.setOnClickListener {
    val dialog = MyDialogFragment()
    val manager = (holder.itemView.context as Activity).fragmentManager
    dialog.show(manager, "example")
}

改为根据 the documentation, you should get the support manager。您只需将 context 转换为 FragmentActivity 而不是 Activity,如下所示:

val manager = (holder.itemView.context as FragmentActivity).supportFragmentManager

编辑:确保 MyDialogFragment 扩展 androidx.fragment.app.DialogFragment,而不是 android.app.DialogFragment。您的 Activity 还应扩展 AppCompatActivity(或至少 FragmentActivity)以使其正常工作。