在 RecyclerView 适配器点击事件中使用 fragmentManager
Using fragmentManager in RecyclerView adapter click event
随着 FragmentManager
的弃用,Android Studio 不会为弃用的代码提供任何代码建议。
问题是 fragmentManager
在 val 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
)以使其正常工作。
随着 FragmentManager
的弃用,Android Studio 不会为弃用的代码提供任何代码建议。
问题是 fragmentManager
在 val 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
)以使其正常工作。