我正在學習如何正確使用片段。 我有4個片段:FragmentManager.popBackStack()將當前片段添加到片段
- 甲
- 乙
- 加載
- 完整
應該相互替換在該序列:
甲 ==>正在加載 ==>乙 ==>加載 ==>完整
方法改變我的片段A到加載:
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();
更改片段B到加載看起來類似(只是論點明顯的變化)
改變將片段裝載到片段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它應該工作,但事實並非如此。
我知道這個......但是'addToBackStack()'方法應該記住所有事務並執行和反向 – Lau