【发布时间】:2016-04-23 14:42:31
【问题描述】:
我正在学习如何正确使用片段。 我有 4 个片段:
- 一个
- B
- 加载中
- 完成
应该按这个顺序互相替换:
A ==> 加载中 ==> B ==> 加载中 ==> 完成
将我的 Fragment A 更改为 Loading 的方法:
LoadingFragment loadingFragment = new LoadingFragment();
Bundle bundle = new Bundle();
bundle.putBoolean("fragmentA", true);
loadingFragment.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, loadingFragment)
.addToBackStack(null)
.commit();
将 Fragment B 更改为 Loading 看起来相似(只有参数明显更改)
将Loading Fragment变为Fragment B的方法:
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, new FragmentB())
.commit();
}
}).start();
Thread.sleep(...) 只是一个很长的操作...
显然这次我不会加.addToBackStack(null)。
好的。现在的问题:
当我使用getFragmentManager().popBackStack() 方法时,之前的片段(A)被添加到下面(我的片段容器是LinearLayout)我的实际片段而不是替换它。据此:https://stackoverflow.com/a/17793959/3279023 它应该可以工作,但事实并非如此。
【问题讨论】: