我需要的是特定片段的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布尔值,将只要片段可见/隐藏都需要执行的代码放在此方法中

10-07 20:08