片段在删除顶部片段时不调用恢复



假设有两个片段,X和Y。我正在 X 上添加 Y 片段。当 Y 完成其工作时,将其删除,X 再次可见。

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

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

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

在活动中,你对第二个片段使用替换:

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

最新更新