1

我有一些让我难过的事情。我有一个片段(片段 A),它的 ViewPager 包含三个片段(用于向左/向右滑动)。因此,如果在另一个片段中,在onBackPressed()方法中,我执行getFragmentManager().popBackStack()调用,片段 A 将再次可见(带有子片段的 ViewPager),这是所需的状态。但是,对于 Fragment A 或 ViewPager 中没有任何方法表明 Fragment A/ViewPager 再次可见。

片段生命周期 ( http://developer.android.com/guide/components/fragments.html ) 中引用的任何片段方法都不应在“片段从后台堆栈返回布局”或任何方法时调用在 OnPageChangeListener 中调用(是的,我确实在 Fragment A 的 onCreateView 中调用 viewPager.setOnPageChangeListener(this))。

关于我可以在哪里看的想法?

4

1 回答 1

0

我有一个ViewPager添加到布局的应用程序,然后被另一个片段替换,并将更改添加到事务返回堆栈中。我Log在寻呼机的每个生命周期方法中都有语句。当按下后退按钮并将寻呼机返回到布局时,我的logcat输出显示为寻呼机调用的这些方法:onCreateView(), onActivityCreated(), onStart(), onResume()。注意,当一个fragment进入后栈时,它的视图被销毁了,但是fragment对象并没有被销毁,所以当fragment从后栈返回时,不会调用onCreate().

此行为与Fragment Guide中的生命周期图一致。您应该能够使用调用来onResume()指示您的寻呼机可见。我只能建议您将调试输出添加到寻呼机的生命周期方法中并查看输出。如果您认为它是错误的,请将其添加到您的问题的帖子中。还要指出您正在使用的片段事务方法。如果碰巧您使用hide()的是remove()or replace(),那么生命周期事件是不同的,您可能需要使用onHiddenChanged().

于 2015-07-02T19:19:03.047 回答