当ViewPager中的片段出现和消失时如何做一些代码

时间:2019-05-20 08:06:22

标签: android android-fragments pager

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

我尝试覆盖onPause(),onResume() 但是没有出现在UI中的Fragment仍然会运行这些方法(我认为创建Fragment时会运行这些方法。)

@Override
public void onPause() {
    Log.i(TAG, "====onPause - " + phrase.getPhrase());
    super.onPause();
}

@Override
public void onResume() {
    Log.i(TAG, "====onResume - " + phrase.getPhrase());
    super.onResume();
}

我只想在Fragment在UI中出现和消失时才运行一些代码。 但对于我来说,每个新页面都会创建一个:

  

==== onPause-我希望您带Tom上学。   ==== onResume-Tom,我可以和你谈谈吗?   ==== onPause-我知道汤姆想和你说话。   ==== onPause-我可以和您谈谈吗?   ==== onPause-汤姆,我可以和您谈谈吗?   ==== onResume-我知道汤姆想和你谈谈。   ==== onResume-我可以和你谈谈吗?   ==== onResume-汤姆,我可以和你说话吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法:-

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

}

答案 1 :(得分:1)

我这样解决了我的问题:

  @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);
            }
        }
}