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

android:如何在计时器中更新片段,android,android-fragments,timer,Android,Android Fragments,Timer,我有一个带有标签的片段的活动,我使用标准的3标签片段模型构建了这个应用程序 下面的代码返回按下的rootview选项卡 public static class DummySectionFragment extends Fragment implements OnClickListener { ... public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved

我有一个带有标签的片段的活动,我使用标准的3标签片段模型构建了这个应用程序

下面的代码返回按下的rootview选项卡

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

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

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


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

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

基本概念是将消息发布到处理程序,默认情况下,处理程序会将您置于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();
  }
}
私有静态类DelayHandler扩展了处理程序{
私有弱引用弱片段引用;
私有延迟处理程序(MyFragment frag){
弱片段引用=新的弱引用(frag);
}
@凌驾
公共无效handleMessage(消息消息消息){
超级handleMessage(msg);
MyFragment frag=weak_fragment_reference.get();
如果(frag!=null)
frag.myDelayMethod();
}
}
要设置延迟消息,只需使用以下方法之一:

  • handlerInstance.sendEmptyMessageDelayed(int-what,long-delayMillis)
  • handlerInstance.sendEmptyMessageAtTime(int-what,long-uptimeMillis)
  • handlerInstance.sendMessageDelayed(Message msg,long delayMillis)
  • handlerInstance.sendMessageAtTime(消息消息消息,长正常运行时间)

根据您的用例,只需传入一个
Runnable
,而不是将代码放在处理程序中,这也可能很有用。这为您提供了一些选项,如
posttime(Runnable r,long uptimeMillis)
postDelayed(Runnable r,long delayMillis)

谢谢lokesh,但有几点(a)如何编写侦听器界面(请选择任何示例)单击下面的链接,应该会对您有所帮助。谢谢,我错过了一个重要事实,即选项卡式片段。DummySectionFragment onCreateView根据选项卡id返回根视图。根视图针对每个片段xml膨胀。现在如何调用一个片段方法呢?