마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

BottomNavigationView를 사용하고 있는데요. fragment -> Activity후 finish 후의 상태를...

0 추천

안녕하세요

BottomNavigationView를 구현하는중에 질문이 있습니다.


<FrameLayout>을 가지고있는

MainActivity에서
5개 fragment로 BottomNavigationView의 item 클릭시 변경되는 화면을 구현하고 있습니다.

 

특정 Fragment에서 버튼을 클릭해서 다른 액티비티로 갔다가
해당 액티비티가 finish 되면, 기존의 Fragment 화면이 아닌

초기 설정값으로 돌아가고 있습니다.

원래 프래그먼트로 돌아가게 하고 싶은데 방법이 있을까요 ?

아래는 MainActivity의 초기 Navigation 세팅값 입니다. 

(onCreate에서 아래 메서드 호출)

private fun initNavigationBar() {
        //fragment hide&&show를 위해 일단 다 생성하고 숨김
        initFragments()

        //처음에 fragmentCalendar clicked 세팅
//        binding.bottomNavigation.menu.findItem(R.id.nav_home).isChecked = true

        //ItemSelectedListener 세팅
        binding.bottomNavigation.run {
            setOnNavigationItemSelectedListener {
                val currentFragment = supportFragmentManager.findFragmentById(R.id.frame_container)

                when (it.itemId) {
                    R.id.nav_memo -> changeFragment(currentFragment!!, fragmentMemo)
                    R.id.nav_message -> changeFragment(currentFragment!!,fragmentMessage)
                    R.id.nav_home -> changeFragment(currentFragment!!,fragmentCalendar)
                    R.id.nav_sales -> changeFragment(currentFragment!!,fragmentSales)
                    R.id.nav_customers -> changeFragment(currentFragment!!,fragmentCustomers)
                }
                true
            }
            selectedItemId = R.id.nav_home
        }

    }

 

안드로이드촙오자 (340 포인트) 님이 5일 질문

1개의 답변

0 추천

Backstack을 클리어하고 가고 싶은 프레그먼트로 돌아가면 될 것 같은데요. 아래처럼 해보세요.

val fragmentManager = ...
if (fragmentManager.isStateSaved()) return

fragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)

//여기에서 원하는 프레그먼트로 replace

 

spark (66,020 포인트) 님이 5일 답변
선생님...
문제를 찾았는데요...

BottomNavigationView를 가지고 있는 MainActivity의
Fragment에서 subActivity를 실행하고
finish()를 호출하면

MainActivity의 onCreate가 다시 호출이 됩니다...
...