假设有两个片段,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()