Android 当ViewPager中的片段出现和消失时,如何执行一些代码

Android 当ViewPager中的片段出现和消失时,如何执行一些代码,android,android-fragments,pager,Android,Android Fragments,Pager,在我的android应用程序中,我使用带有片段的ViewPager,我想在片段出现(用户可以看到)和片段消失(用户停止看到片段)时运行一些代码 我试图覆盖onPause()、onResume() 但是UI中没有出现的片段无论如何都会运行这些方法(我认为这些方法在创建片段时运行) 我只想在UI中出现和消失片段时运行一些代码。 但在我的例子中,每一个新的页面都会产生这样的结果: 暂停-我要你带汤姆去学校。 我能和你谈谈吗,汤姆? 暂停-我知道汤姆想和你谈谈。 暂停-我能和你谈谈吗? 暂停-我能和你谈

在我的android应用程序中,我使用带有片段的ViewPager,我想在片段出现(用户可以看到)和片段消失(用户停止看到片段)时运行一些代码

我试图覆盖onPause()、onResume() 但是UI中没有出现的片段无论如何都会运行这些方法(我认为这些方法在创建片段时运行)

我只想在UI中出现和消失片段时运行一些代码。 但在我的例子中,每一个新的页面都会产生这样的结果:

暂停-我要你带汤姆去学校。 我能和你谈谈吗,汤姆? 暂停-我知道汤姆想和你谈谈。 暂停-我能和你谈谈吗? 暂停-我能和你谈谈吗,汤姆? 我知道汤姆想和你谈谈。 我可以和你谈谈吗? 我能和你谈谈吗,汤姆


您可以使用以下方法:-

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
    super.setUserVisibleHint(isVisibleToUser)
    if(isVisibleToUser){
     // do something
      }

}

您可以使用以下方法:-

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
    super.setUserVisibleHint(isVisibleToUser)
    if(isVisibleToUser){
     // do something
      }

}

我这样解决了我的问题:

  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {

        if(phrase != null){
            if(isVisibleToUser){
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }else {
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }
        }
}

我这样解决了我的问题:

  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {

        if(phrase != null){
            if(isVisibleToUser){
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }else {
                Log.i(TAG, "setUserVisibleHint" + phrase.getPhrase()+ "|isVisibleToUser " + isVisibleToUser);
            }
        }
}

您可以使用viewpager适配器的OnPageChangeListener您可以使用viewpager适配器的OnPageChangeListener