2015-09-07 124 views
0

我在AppCompatActivity中添加片段。我想知道任何片段何时会聚焦或失去焦点。例如,当添加新片段时,我想要一些代码告诉前一个片段,即他失去了焦点。当片段失去焦点并重新获得AppCompatActivity的关注

我已经试过setUserVisibleHint()onHiddenChanged()方法,但两者都不起作用。

有人可以告诉我如何做到这一点。

+0

的原始来源是在技术上可以一次集中多个片段?尝试记录每个片段onResume和onPause。我假设你的片段是关注这两个生命周期事件的。 –

+0

@DanielBo只有在调用Activities onResume()或onPause()时才会调用片段onResume()或onPause()。看到这里:http://stackoverflow.com/questions/11326155/fragment-onresume-onpause-is-not-called-on-backstack#16252923 –

+1

看到我的答案它是为我工作。 –

回答

0

感谢@oriharel提供了一个很好的解决方案来处理这种情况。这里是代码:

在你的活动(MyActivity),加入这个监听器:

getSupportFragmentManager().addOnBackStackChangedListener(getListener()); 

(正如你可以看到我使用的是兼容包)。

getListener实现:一个 “” 被按下后

MyFragment.onFragmentResume()将被调用。虽然一些注意事项:

  1. 它假定您添加的所有事务返回堆栈(使用FragmentTransaction.addToBackStack())

  2. 它会在每个堆栈变化被激活(您可以存储其他的东西在后面如动画),所以你可能会得到同一个片段实例的多个调用。

答案here

相关问题