假设有两个片段,X和Y。我在X上添加了Y片段。当Y完成其工作后,将其删除,然后再次看到X。
问题:当删除Y片段并且X再次可见时,我必须执行一些任务,但是未调用onResume
,因为它取决于Activity。那我怎么知道X
片段是可见的?
答案 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
}
}