android:如何在计时器中更新片段

时间:2014-05-12 05:20:11

标签: android android-fragments timer

我有一个包含Tabbed片段的活动,我使用标准的3选项卡片段模型构建了应用程序。

以下代码返回按下的膨胀的rootview选项卡。

public static class DummySectionFragment extends Fragment implements OnClickListener {
... public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

但是如果选项卡处于活动状态,如何更新计时器中的内容以及将计时器放在DummySectionFragment或mainActivity中的位置?

2 个答案:

答案 0 :(得分:0)

将计时器保留在MainActivity中,并使用getActivity()。getCurrentTimerValue()返回计时器数据。如果您的项目要求很简单,这将是最简单的方法。

但是如果你需要在后台持续更新UI,那么在MainActivity中编写一个监听器接口并在DummySectionFragment中实现它。

答案 1 :(得分:0)

由于我在寻找相关问题时偶然发现了这一点,我认为如果我提供一些似乎最需要简单计时器的活动和碎片的解决方案,它可能对其他人有所帮助。希望你觉得这很有用。

基本概念是将消息发布到处理程序,默认情况下会将您置于UI线程上,这是您经常需要的。

发布的活动或消息的基本,安全,捕手看起来与此类似:

private static class DelayHandler extends Handler {
  private WeakReference<MyFragment> weak_fragment_reference;

  private DelayHandler(MyFragment frag) {
    weak_fragment_reference = new WeakReference<>(frag);
  }

  @Override
  public void handleMessage(Message msg) {
    super.handleMessage(msg);
    MyFragment frag = weak_fragment_reference.get();
    if (frag != null)
      frag.myDelayMethod();
  }
}

要设置延迟消息,只需使用以下方法之一:

  • handlerInstance.sendEmptyMessageDelayed(int what, long delayMillis)
  • handlerInstance.sendEmptyMessageAtTime(int what, long uptimeMillis)
  • handlerInstance.sendMessageDelayed(Message msg, long delayMillis)
  • handlerInstance.sendMessageAtTime(Message msg, long uptimeMillis)

根据您的使用情况,简单地传递Runnable而不是将代码放入处理程序中也可能很有用。这为您提供了一些选项,例如postAtTime(Runnable r, long uptimeMillis)postDelayed(Runnable r, long delayMillis)