当 ViewPager 中的片段出现和消失时如何执行一些代码
Posted
技术标签:
【中文标题】当 ViewPager 中的片段出现和消失时如何执行一些代码【英文标题】:How to do some code when fragments in a ViewPager appear and disappear 【发布时间】:2019-05-20 08:06:22 【问题描述】:在我的 android 应用程序中,我使用带有 Fragments 的 ViewPager,并且我想在 Fragment 出现(当用户可以看到它时)和 Fragment 消失时(当用户停止看到 Fragment 时)运行一些代码
我试图覆盖 onPause(), onResume() 但是没有出现在 UI 中的 Fragments 无论如何都会运行这些方法(我认为这些方法在创建 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();
我只想在片段在 UI 中出现和消失时运行一些代码。 但在我的情况下,每个新页面都会创建这个:
====onPause - 我要你送汤姆去学校。 ====onResume - 我可以和你谈谈吗,汤姆? ====onPause - 我知道汤姆想和你谈谈。 ====onPause - 我可以和你谈谈吗? ====onPause - 我可以和你谈谈吗,汤姆? ====onResume - 我知道汤姆想和你谈谈。 ====onResume - 我可以和你谈谈吗? ====onResume - 我可以和你谈谈吗,汤姆?
【问题讨论】:
你可以使用viewpager适配器的OnPageChangeListener 【参考方案1】:您可以使用以下方法:-
override fun setUserVisibleHint(isVisibleToUser: Boolean)
super.setUserVisibleHint(isVisibleToUser)
if(isVisibleToUser)
// do something
【讨论】:
【参考方案2】:我这样解决了我的问题:
@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 中的片段出现和消失时如何执行一些代码的主要内容,如果未能解决你的问题,请参考以下文章
在ViewPager上,在onPageSelected上的片段上启动动画