기록

[Error] Fragment not associated with a fragment manager. 본문

[Study]/Android

[Error] Fragment not associated with a fragment manager.

Dannnnnn 2022. 9. 23. 11:33
반응형
            override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
                when (menuItem.itemId) {
                    R.id.delete_menu -> {
                        viewModel.deleteNote(note)
                        this@SelectedNoteFragment.findNavController().popBackStack()
                    }
                    else -> return false

                }
                return true
            }

 

java.lang.IllegalStateException: Fragment SelectedNoteFragment{e2fb287} (9027fbbf-8601-4b62-ab29-fdbea88a370d) not associated with a fragment manager.

 

findNavController()를 onCreateView와 onMenuItemSelected 두 곳에서 생성하여 쓰고 있었다.

 

Find a NavController given a Fragment Calling this on a Fragment that is not a NavHostFragment or within a NavHostFragment will result in an IllegalStateException 관계?

 

        val navController = findNavController()

        val menuHost: MenuHost = requireActivity()
        menuHost.addMenuProvider( object : MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
                menuInflater.inflate(R.menu.selected_note_menu, menu)
            }

            override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
                when (menuItem.itemId) {
                    R.id.delete_menu -> {
                        viewModel.deleteNote(note)
                        navController.navigateUp()
                    }
                    else -> return false
                }
                return true
            }

        })

 

변수를 만들어 참조하니 해결되었다.

 

반응형