0

我有 ViewPager 有多个片段。每个片段都有一个 Chrnometer,它显示页面/片段活动的时间。

  1. 每个片段都会覆盖 onPause 和 onResume 方法来停止和启动 Chronometer。
  2. 我已经意识到 OffScreen 页面上的 Chronometer 不会停止。
  3. 这仅发生在屏幕外片段上。
  4. OffScreen 页面的活动状态是否没有改变?

在这个问题上完全迷失了。感谢有关此问题的任何帮助。下面是代码片段

public void onPause() {
    super.onPause();

    timeWhenStopped = chronometer.getBase() - SystemClock.elapsedRealtime();
    chronometer.stop();

}

public void onResume() {
    super.onResume();

    chronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
    chronometer.start();

}
4

1 回答 1

0

您正在查看片段和片段的生命周期(onAttach、onPause...)

要解决问题,您还需要了解ViewPager <-> FragmentStatePagerAdapter,以及 ViewPager 如何在 UI 上的滑动事件上委托 UI 更改。

关注 ViewPager 中的“侦听器”,并将您对 StopChronometer 的调用插入到 pagechangeListener 的实现中。

OnPause 没有在来自 swipedPage 的委托事件处理程序中被调用...

但是,如果您了解这 3 个类的协作,并且可能查看使用这些类的一些 github 示例或查看 ADT 示例 ViewPager 应用程序之一,那么您应该能够将它们连接起来,以便您可以将 StopChronometer 代码插入由页面滑动产生的调用链中的正确位置。

于 2013-11-12T16:36:15.863 回答