0
我在AppCompatActivity
中添加片段。我想知道任何片段何时会聚焦或失去焦点。例如,当添加新片段时,我想要一些代码告诉前一个片段,即他失去了焦点。当片段失去焦点并重新获得AppCompatActivity的关注
我已经试过setUserVisibleHint()
和onHiddenChanged()
方法,但两者都不起作用。
有人可以告诉我如何做到这一点。
我在AppCompatActivity
中添加片段。我想知道任何片段何时会聚焦或失去焦点。例如,当添加新片段时,我想要一些代码告诉前一个片段,即他失去了焦点。当片段失去焦点并重新获得AppCompatActivity的关注
我已经试过setUserVisibleHint()
和onHiddenChanged()
方法,但两者都不起作用。
有人可以告诉我如何做到这一点。
感谢@oriharel提供了一个很好的解决方案来处理这种情况。这里是代码:
在你的活动(MyActivity),加入这个监听器:
getSupportFragmentManager().addOnBackStackChangedListener(getListener());
(正如你可以看到我使用的是兼容包)。
getListener实现:一个 “回” 被按下后
MyFragment.onFragmentResume()将被调用。虽然一些注意事项:
它假定您添加的所有事务返回堆栈(使用FragmentTransaction.addToBackStack())
它会在每个堆栈变化被激活(您可以存储其他的东西在后面如动画),所以你可能会得到同一个片段实例的多个调用。
答案here
的原始来源是在技术上可以一次集中多个片段?尝试记录每个片段onResume和onPause。我假设你的片段是关注这两个生命周期事件的。 –
@DanielBo只有在调用Activities onResume()或onPause()时才会调用片段onResume()或onPause()。看到这里:http://stackoverflow.com/questions/11326155/fragment-onresume-onpause-is-not-called-on-backstack#16252923 –
看到我的答案它是为我工作。 –