我需要的是特定片段的onResume
方法(对活动有效)。我正在将片段(假设片段A)添加到后堆栈中,并从片段A中打开另一个片段(片段B)(再次添加到后堆栈中)。当片段B关闭且片段A为再次出现在屏幕上。我希望onCreateView
被调用,但是当我弹出片段B时不会被调用。我还尝试向片段A添加OnBackStackChangedListener
,但是当后退堆栈改变时,我无法跟踪屏幕上哪个片段。
所以我的问题是,当我回到片段A时,如何使onCreateView
被调用。如果这不是一个好习惯,那么我还能如何跟踪此事件?
编辑
我正在使用此代码显示新片段:
getSupportFragmentManager().beginTransaction()
.add(R.id.content, fragment)
.addToBackStack(tag)
.commit();
我应该以某种方式更改它以使
onCreateView
被调用吗?由于我是在现有的片段A上添加新的片段B(当屏幕上显示B时,我甚至可以单击片段A中的按钮),因此当我弹出片段B时,片段A的情况没有任何变化。 最佳答案
在Fragment中重写此方法,然后检查布尔值
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
//Log.e("setUserVisibleHint", "isVisibleToUser " + isVisibleToUser);
}
根据isVisibleToUser布尔值,将只要片段可见/隐藏都需要执行的代码放在此方法中