フラグメントを正しく使用する方法を学んでいます。 FragmentManager.popBackStack()は現在のフラグメントの下にフラグメントを追加します
コンプリート
- B:
==> 私は4つの断片を持っていますLoading ==>Bロードに私のフラグメントAを変更 ==>ロード ==>完全
方法:ロード中に断片Bを変更
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にロードする方法:
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)は、代わりにそれをreplaceingの私の実際のフラグメント(私のフラグメントコンテナがあるのLinearLayout)の下に追加されます。これによると:https://stackoverflow.com/a/17793959/3279023それは動作するはずですが、そうではありません。
私はこれを知っていますが、 'addToBackStack()'メソッドはすべてのトランザクションを覚えておいて、 – Lau