这个问题在这里已有答案:
Why not a duplicate: 建议的帖子仅适用于viewpager,或者调用onResume时 .
我有一个listfragment和一个detailfragment . 单击列表项时将打开详细信息片段 . 我通过隐藏listfragment并显示detailfragment来实现这一目标 . 当用户返回时,他返回到listfragment .
如何检测用户何时返回我的片段,或者我的片段何时可见?
请注意,我想继续使用.hide()和show(),并且我正在寻找一个监听器或一个onVisible来检查片段何时变得可见,而不是检查它是否可见的方法 .
3 回答
编辑:
正如评论中指出的那样,
setUserVisbileHint()
不会自动调用,而是在ViewPager中使用FragmentPageAdapter .对于问题中描述的场景,
onHiddenChanged(boolean hidden)
http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged(boolean)是合适的 .如文档中所述,每次Fragments隐藏状态更改时都会调用该方法,但不会在Fragment的初始设置中调用 .
您可以使用setUserVisibleHint()http://developer.android.com/reference/android/support/v4/app/Fragment.html#setUserVisibleHint(boolean)
如果isVisibleToUseris设置为truethe片段应该显示 .
阅读方法: Fragment. isVisible()
例:
您可以在片段启动时向您的活动发送事件:https://www.inkling.com/read/programming-android-mednieks-1st/chapter-11/visualizing-the-fragment-life
通过重写onStart方法:
MyInterface
是一个接口:并且您的活动必须实施它 .
对于像这样的事件总线库,这可能更容易
RoboGuice's event bus
Otto
EventBus