【发布时间】:2016-08-15 22:58:09
【问题描述】:
谁能解释一下为什么在线程上替换片段有时会导致空白而不是在屏幕上显示片段?
public void swapFragment(final CustomFragment fragment) {
new Thread(new Runnable() {
@Override
public void run() {
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, fragment, fragment.getName());
ft.addToBackStack(fragment.getName());
ft.commit();
}
}).start();
}
让我解释一下发生了什么:
1) 我的容器内没有添加任何片段。
2) 我正在使用这种方法添加片段 A - 它的工作原理
3) 然后我使用这种方法将实际片段 A 与我的片段 B 交换 - 它的工作
4) 但是当我尝试将它与片段 A 的新实例 (!!!) 交换时,它会留下空白
我知道我可以在主线程上执行此操作,但这只是一个示例。我正在处理不同的问题,但我的问题更难以解释。
编辑:
在第 4 点)我放置了错误的片段 - 原来是“片段 A”
【问题讨论】:
标签: java android multithreading android-fragments