Вложенный фрагмент: не удается выполнить это действие после onSaveInstanceState - PullRequest
0 голосов
/ 06 июня 2019

Я только что обнаружил постоянный сбой на своем симуляторе Pixel с API 24. Мое реальное устройство и некоторые другие симуляторы не имеют этой ошибки.

Я делаю следующее: во фрагментеЯ пытаюсь добавить еще один фрагмент, используя этот код:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    val fragmentTransaction = requireFragmentManager().beginTransaction()
    val fragment = ComposableTableReportFragment.newInstance(null)
    fragmentTransaction.add(R.id.tableContainer, fragment)
    fragmentTransaction.commit()

Это приводит к следующей аварии при запуске моего приложения.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: net.pokeranalytics.android, PID: 20332
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
        at androidx.fragment.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2080)
        at androidx.fragment.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2106)
        at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:683)
        at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:637)
        at net.pokeranalytics.android.ui.fragment.StatisticsFragment.initUI(StatisticsFragment.kt:71)
        at net.pokeranalytics.android.ui.fragment.StatisticsFragment.onViewCreated(StatisticsFragment.kt:62)

Я пробовал разные вещи, как видно на SO, так как сбой происходит довольно часто, но кажется, что каждый случай уникален и не нашел решения для моего.Спасибо за помощь!

1 Ответ

0 голосов
/ 06 июня 2019

Попробуйте переключиться на -

fragmentTransaction.commitAllowingStateLoss()
...