如何在Android上设置要删除的片段的计时器?

如何在Android上设置要删除的片段的计时器?,android,timer,fragment,Android,Timer,Fragment,我想显示一个片段,然后在一段时间后删除该片段 对于加载,我使用FragmentTransaction替换FrameLayout。首先,我使FrameLayout可见,将其替换为片段,然后使用postDelayed()方法: 在Runnable中,我尝试删除此片段,然后更新FrameLayout的可见性: private class Runnable implements java.lang.Runnable { @Override public void run() {

我想显示一个片段,然后在一段时间后删除该片段

对于加载,我使用FragmentTransaction替换FrameLayout。首先,我使FrameLayout可见,将其替换为片段,然后使用postDelayed()方法:

在Runnable中,我尝试删除此片段,然后更新FrameLayout的可见性:

private class Runnable implements java.lang.Runnable {

    @Override
    public void run() {
        if (getChildFragmentManager().findFragmentByTag("timetableDetailFragment") != null) {
            FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
            fragmentTransaction.setCustomAnimations(R.anim.abc_slide_in_bottom, R.anim.abc_fade_out);
            fragmentTransaction.remove(getChildFragmentManager().findFragmentByTag("timetableDetailFragment"));
            fragmentTransaction.commit();
            contentFrame.setVisibility(View.GONE);
        }
    }

}
问题是,当我再次创建片段时,我可以看到旧片段在被新片段替换之前仍然存在

在非UI线程中尝试更改UI是否会有问题?实现目标的典型方法是什么?

我尝试了以下方法:

  • 更改了可运行类的名称
  • 在父片段布局文件中添加了以下内容:

    android:animateLayoutChanges="true"
    
  • 已删除自定义动画

从那以后,问题就解决了。然后我再次添加了自定义动画,它仍然可以工作


我不知道到底是什么解决了这个问题,但现在它起作用了。谢谢你,丹尼尔·波

您正在ui线程上运行该runnable,如果不运行,会出现RuntimeException吗?“仅创建视图的线程…”:“好的。那么我该如何解决这个问题呢?我不确定把你的类命名为Runnable是个好主意。另外,我会禁用自定义动画,只是为了看看这是否可能有问题。好的。我试试看。
android:animateLayoutChanges="true"