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