Android 调用上一个片段的onResume()

Android 调用上一个片段的onResume(),android,android-fragments,onresume,Android,Android Fragments,Onresume,在我的应用程序中,有一个活动和三个片段比如A、B、C。我将它们一个接一个地添加到一起我没有在backstack中加载片段A,但是在单击列表视图项时,我在backstack中加载另外两个片段。现在我的问题和有趣的部分是,虽然onBackPressed()没有调用任何片段的回调方法(onResume(),onStart()),但是如果我锁定手机并继续我的活动,并且我在片段C上,则调用之前所有片段A和B的onResume。在onResume()中,我调用了一个api,所有的检查都失败了 if(getF

在我的应用程序中,有一个
活动
和三个
片段
比如A、B、C。我将它们一个接一个地添加到一起

我没有在
backstack
中加载片段
A
,但是在单击列表视图项时,我在backstack中加载另外两个片段。现在我的问题和有趣的部分是,虽然
onBackPressed()
没有调用任何片段的回调方法(
onResume(),onStart()
),但是如果我锁定手机并继续我的活动,并且我在片段C上,则调用之前所有片段A和B的onResume。在
onResume()
中,我调用了一个api,所有的检查都失败了

if(getFragmentManager()!=null && activity!=null) {
      DashboardFragment currentFragment = (DashboardFragment) getFragmentManager().findFragmentById(R.id.container);
      if(currentFragment.isVisible() && isAdded() && isVisible() && getUserVisibleHint()) {
       //callApi;
       }
}
像isvisible()等方法都不会返回正确的值和像

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
}

我们没有接到电话。因此,如何确保仅在片段可见时调用api。

仅在片段对用户可见后,我用于从api加载数据的代码是:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser && isResumed()) {
        // API call
    }
}
不太清楚如果没有嵌套,为什么要从其他面板调用
仪表板片段


当然,您可以将API逻辑添加到
onResume()
方法中。除非您的片段在ViewPager中,否则在调用
onResume()
时,用户将可以看到这些片段。

在将这些片段添加到活动视图中时,您是否使用
add
replace
将这些片段添加到活动视图中?@mwieczorek我使用addadd或replace对您的片段c onResume()没有任何影响是否调用?@jiteshmohite是的,是的,但我想确保当我在cI上时,不会调用A的onResume。我没有调用DashboardFragment,DashboardFragment是一个片段,但当手机启动时,即使我在Fragment C上,也会调用DashBoardFragment的onResume。除非在B或C处于活动状态时出于某种原因需要内存中有A,否则应使用
替换
。这将解决在您不希望的情况下调用某个片段中的任何内容的问题。此外,您提到的方法在加载片段时不会被调用
getUserVisibleHint()
onCreate()
之前被调用,如果我没记错的话。这应该是上面的
setUserVisibleHint()
,并且在onCreate之前被调用。