Это потому, что ваш Context
экземпляр в адаптере не гарантированно будет Activity
.Это может быть ContextWrapper
с Activity
в качестве базы Context
.Попытка развернуть это было бы хрупким.
Вместо этого я бы порекомендовал вам определить интерфейс в вашем адаптере.От вашего Activity
предоставьте реализацию этого интерфейса вашему адаптеру, который будет выполнять FragmentTransaction
.Например:
class MyAdapter : RecyclerView.Adapter<MyType> {
private var listener: (() -> Unit)? = null
fun setListener(listener: (() -> Unit)?) {
this.listener = listener
}
// wherever your onClick is handled:
listener?.invoke()
}
Затем в Activity
, который инициализирует MyAdapter
:
myAdapter.setListener {
supportFragmentManager
.beginTransaction()
.replace(MainActivity.FRAGMENT_CONTAINER, TextScreen())
.commit()
}