删除顶部片段时不调用片段onResume

时间:2019-01-22 10:11:46

标签: android fragment

假设有两个片段,X和Y。我在X上添加了Y片段。当Y完成其工作后,将其删除,然后再次看到X。

问题:当删除Y片段并且X再次可见时,我必须执行一些任务,但是未调用onResume,因为它取决于Activity。那我怎么知道X片段是可见的?

2 个答案:

答案 0 :(得分:0)

实际上,您应该将第二个片段替换为:

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()

答案 1 :(得分:0)

如果将一个片段推到另一个片段,则片段将不会调用onResume。 您需要使用onHiddenChanged方法,该方法将在片段更改可见性时得到通知

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
    if (hidden) {
        //do when hidden
    } else {
       //do when show
    }
}