Фрагмент onResume не вызывается при удалении верхнего фрагмента - PullRequest
0 голосов
/ 22 января 2019

Предположим, есть два фрагмента: X и Y. Я добавляю фрагмент Y поверх X. Когда Y завершает свою работу, затем удаляется, и снова появляется X.

Проблема: Мне нужно выполнить некоторое задание, когдаФрагмент Y удаляется и X снова виден, но onResume не вызывается, потому что это зависит от активности.Тогда откуда мне знать, что X фрагмент виден?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Фрагмент не будет вызывать onResume, если вы нажимаете один фрагмент на другой.Вам необходимо использовать метод onHiddenChanged, который будет уведомлять об изменении фрагмента видимости

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
    if (hidden) {
        //do when hidden
    } else {
       //do when show
    }
}
0 голосов
/ 22 января 2019

В активии вы должны использовать замену для второго фрагмента:

override fun onCreate(savedInstanceState: Bundle?) {         
      supportFragmentManager.beginTransaction().add(R.id.fragContainer,                 FirstFragment()).addToBackStack(FirstFragment::class.java.simpleName).commit()
     
      btnAdd.setOnClickListener {                   
                supportFragmentManager.beginTransaction().replace(R.id.fragContainer,  
                SecondFragment()).addToBackStack(SecondFragment::class.java.simpleName).commit()
            }
    }

    override fun onBackPressed() {
        super.onBackPressed()
        supportFragmentManager
        .popBackStack(SecondFragment::class.java.simpleName,FragmentManager.POP_BACK_STACK_INCLUSIVE)
    }

Итак, когда вы нажмете назад, SecondFragment исчезнет и в FirstFragment onResume () будет вызван

...