8

フラグメントを別のフラグメントに置き換えたときに、フラグメントが onPause や onStop などのエンド ライフサイクル メソッドを呼び出していないという奇妙な問題があります。このようにフラグメントを置き換えます

public static void replaceFragment(Activity activity, int layoutId, Fragment fragment, String title, String shortTitle) {
    FragmentTransaction transaction = activity.getFragmentManager().beginTransaction().replace(layoutId, fragment);
    transaction.addToBackStack(title);
    transaction.setBreadCrumbTitle(title);
    transaction.setBreadCrumbShortTitle(shortTitle);
    transaction.commit();
    activity.getFragmentManager().executePendingTransactions();     
}

同じフラグメントが以前に表示された後、同じフラグメントを再度置き換えた後、popBackStack が原因で、onStart の前に onStop を呼び出しても、何らかの形でフラグメントを生かしていると思いますか?

4

2 に答える 2

6

私は問題を解決しました:)

これは、タブレット上のアプリが 1 つのメイン フラグメントに 2 つのフラグメントを追加したためであり、他の 2 つのフラグメントを含むフラグメントを置き換えたときに、onPause と onStop が呼び出されないため、メイン フラグメント onStop で onStop を呼び出すことで、この問題を解決しました。

助けてくれてありがとう、私が使用していた方法が本当に問題ではないことを知りませんでしたが、子フラグメントは親と一緒に破棄されません!

于 2013-10-14T16:47:54.177 に答える