Почему не работает навигация из Fragment в Fragment?
Пишу мобильное приложение на Котлин и столкнулся с такой ошибкой
java.lang.IllegalStateException: View android.widget.FrameLayout{ff4c68f V.E...... ......I. 0,0-0,0} does not have a NavController set
at androidx.navigation.Navigation.findNavController(Navigation.kt:71)
at com.example.historicalsaratov.fragment.ListFragment.init(ListFragment.kt:79)
at com.example.historicalsaratov.fragment.ListFragment.onViewCreated(ListFragment.kt:68)
Не понимаю как её исправить, но она кроется в нажатии на FloatingBtn, так как при удалении части кода с регистрацией собыйти страница отображается корректно
Вот код регистрации события
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
init(view)
registerEvents()
}
private fun registerEvents() {
binding.newFloatingActionButton.setOnClickListener{
navController.navigate(R.id.action_listFragment_to_addFragment3)
}
}
private fun init(view: View) {
navController = Navigation.findNavController(view)
auth = FirebaseAuth.getInstance()
}
Так же прикреплю полный код данной страницы
private lateinit var auth: FirebaseAuth
private lateinit var navController: NavController
private lateinit var binding: FragmentListBinding
private lateinit var databaseRef: DatabaseReference
private lateinit var buildRecyclerView : RecyclerView
private lateinit var buildArrayList : ArrayList<Buildss>
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentListBinding.inflate(inflater, container, false)
buildRecyclerView = binding.root.findViewById(R.id.buildList)
buildRecyclerView.layoutManager = LinearLayoutManager(context)
buildRecyclerView.setHasFixedSize(true)
buildArrayList = arrayListOf<Buildss>()
getBuildData()
return binding.root
}
private fun getBuildData() {
databaseRef = FirebaseDatabase.getInstance().getReference("Builds")
databaseRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for (buildSnapshot in snapshot.children){
val buil = buildSnapshot.getValue(Buildss::class.java)
buildArrayList.add(buil!!)
}
buildRecyclerView.adapter = MyAdapter(buildArrayList)
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
init(view)
registerEvents()
}
private fun registerEvents() {
binding.newFloatingActionButton.setOnClickListener{
navController.navigate(R.id.action_listFragment_to_addFragment3)
}
}
private fun init(view: View) {
navController = Navigation.findNavController(view)
auth = FirebaseAuth.getInstance()
}
Такой проблемы не было пока я использовал навигацию чисто через фрагменты, но когда начал пользоваться заменой данных в Активити вылезла такая ерунда