在RecyclerView适配器click事件中使用fragmentManager

时间:2019-02-17 15:09:52

标签: android kotlin onclicklistener fragmentmanager androidx

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

问题是fragmentManager中的val manager = (holder.itemView.context as Activity).fragmentManager,因为它返回了此错误:

'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")
}

1 个答案:

答案 0 :(得分:0)

根据the documentation,您应该改为获取support manager。您只需要将context强制转换为FragmentActivity而不是Activity,就像这样:

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

编辑:确保MyDialogFragment扩展了androidx.fragment.app.DialogFragment,而不是android.app.DialogFragment。您的活动还应扩展AppCompatActivity(或至少扩展为FragmentActivity)以使其正常运行。