Как вызвать метод из фрагмента, только если активность хоста была уничтожена? - PullRequest
0 голосов
/ 05 февраля 2020

Я получил method() во фрагменте. Фрагмент в деятельности хозяина. Поэтому мне нужно вызывать method() только из фрагмента, когда активность хоста была в onDestroy(). Может быть, это что-то вроде флага stati c?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

С помощью SupportFragmentManager вы можете получить фрагмент по идентификатору макета, тегу или имени. Но самое важное здесь - в некоторых ситуациях метод Activity.onDestroy () никогда не может быть вызван. Поэтому будьте осторожны, если вы реализуете код, который должен быть выполнен, например, отписаться от логи c или удалить обратные вызовы.

0 голосов
/ 06 февраля 2020
class MyActivity:  AppCompatActivity() {
    override fun onDestroy() {
        super.onDestroy()
        val fragment = supportFragmentManager.findFragmentById(R.id.my_fragment) as MyFragment
        if (fragment != null) {
            fragment.myMethod()
        }
    }
}
class MyFragment: Fragment() {
    fun myMethod() {
    }
}

Или используйте ViewModel для обработки связи между действием и фрагментом.

https://developer.android.com/topic/libraries/architecture/viewmodel#sharing

...