Użyłem metody commit w moim projekcie, który zbudował ją z fragmentami.Jaka jest różnica między commit() i commitAllowingStateLoss() w Fragments
W każdym razie, czasami otrzymywałem błąd IllegalStateException: Can not perform this action after onSaveInstanceState
i nie mogłem znaleźć żadnego dobrego rozwiązania na ten temat, ale tylko tę metodę commitAllowingStateLoss()
. Zmieniłem funkcję zatwierdzania na commitAllowingStateLoss()
, ale nie testowałem jej zbyt długo, więc czy ta funkcja może mi pomóc? I główne pytanie, jaka jest różnica między commit()
i commitAllowingStateLoss()
?
Różnica jest bardziej subtelna. Funkcja 'commit()' może wygenerować zdarzenie wyjątku, jeśli nie nastąpi utrata stanu. Na przykład 'commit()' zawsze zgłasza wyjątek po wywołaniu z 'LoaderCallbacks.onLoadFinished()', nawet w sytuacjach, w których 'commitAllowingStateLoss()' zapisuje transakcję bez utraty stanu. Oczywiście, _sometimes_ state nie może zostać zapisane podczas pracy z 'onLoadFinished()'. –