Я совершенно не в себе. Я пытаюсь открыть / заменить фрагмент из одного в другой, и только документы, которые я могу найти, получены из Activity или только в Java (с помощью метода getFragmentManager (), по-видимому, не существует в Kotlin).
supportFragmentManager доступен только внутри Activity, и я использую фрагмент и адаптер.
Не могли бы вы мне помочь?
Я думаю, что разве что показывать мой код, потому что он просто ничего не дает, только ошибки
Ни один из ответов не сработал для меня.
Я попробовал что-то еще и создать интерфейс:
interface AdapterCallbackAlbum {
fun onClickItem(album: Album)}
И реализовать это в моем первом фрагменте
class ListAlbumsFragment : Fragment(), AdapterCallbackAlbum {
override fun onClickItem(album: Album) {
val fragment = ListTracksFragment.newInstance()
val transaction = childFragmentManager.beginTransaction()
transaction.replace(R.id.album_fragment, fragment)
transaction.commit()
}
И, наконец, адаптер:
class AlbumAdapter(val context: Context, private val
adapterCallbackAlbum: AdapterCallbackAlbum): Adapter<ViewHolder>() {
override fun onBindViewHolder(holder: RecyclerView.ViewHolder,
position: Int) {
val album = albumList[position]
holder.itemView.setOnClickListener {
adapterCallbackAlbum.onClickItem(album)
}}
Но единственный результат, который я получаю, это второй фрагмент, помещенный в первый, даже если я назову:
transaction.remove(ListAlbumFragment.newInstance())
Мой друг наконец-то решил мою проблему (возможно, это могло бы кому-то помочь).
override fun onClickItem(album: Album) {
val fragment = ListTracksFragment.newInstance()
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.content, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
Проблема была в том, что мы начинаем с MainActivity, который загружает фрагмент, внутри этого фрагмента нам нужно загрузить еще один при событии щелчка. Таким образом, фрагмент для замены - это не текущий фрагмент, а содержимое main_activity.xml.
Спасибо всем за ваши быстрые ответы