Как проверить, что фрагмент виден в фрагменте? - PullRequest
0 голосов
/ 27 октября 2018

У меня FragmentActivity и внутри 4 фрагмента.LoginFragment, RegistrationFragment, ForgottenPasswordFragment, LocalityFragment.

Пользователь может переключаться между ними с помощью кнопки назад, но если вы нажмете back button во фрагменте по умолчанию (LoginFragment или LocalityFragment), я хочу отключить его, потому что он вернет пользователя к SplashScreen,

Итак, я нашел какой-то метод, как получить отображаемый фрагмент.Я пробовал fragment.userVisibleHint и fragment.isVisible.Они оба возвращают false, когда я нажимаю кнопку «Назад», даже если этот фрагмент в данный момент отображается на экране.

Код:

override fun onBackPressed() {
        val activeLoginFragment = supportFragmentManager.findFragmentByTag("LOGIN_FRAGMENT") as LoginFragment?
        val activeLocalityFragment = supportFragmentManager.findFragmentByTag("LOCALITY_FRAGMENT") as LocalityPickFragment?

        createLog("onBackPressedLogin ", activeLoginFragment.toString())
        createLog("onBackPressedLogin ", "LoginFragment is: " + activeLoginFragment?.userVisibleHint)
        if ( (activeLoginFragment == null || !activeLoginFragment.userVisibleHint) || (activeLocalityFragment == null || !activeLocalityFragment.userVisibleHint) ){
            createLog("onBackPressedLogin ", "not visible")
            super.onBackPressed()
        }

    }

fun switchToForgottenPasswordFragment(){
        val mPendingRunnable = Runnable {
            fragmentTransaction = supportFragmentManager.beginTransaction()
            fragmentTransaction.apply {
                replace(R.id.startup_fragment_container, forgottenPasswordFragment)
                addToBackStack(null)
                commit()
            }
        }

        val fragmentThread = Thread(mPendingRunnable)
        fragmentThread.start()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...