Как найти причину java.lang.IllegalStateException?

в Google Play Console мне пришло уведомление о сбое моего небольшого приложения на устройстве Xiaomi Mi 10 (код ниже). Я в Android Studio все проверил много раз, но таких сбоев не нашлось. Как я могу узнать откуда он? Спасибо.

java.lang.IllegalStateException: 
  at androidx.fragment.app.FragmentManager.ensureExecReady (FragmentManager.java:1931)
  at androidx.fragment.app.FragmentManager.execSingleAction (FragmentManager.java:1967)
  at androidx.fragment.app.BackStackRecord.commitNow (BackStackRecord.java:305)
  at androidx.viewpager2.adapter.FragmentStateAdapter$FragmentMaxLifecycleEnforcer.updateFragmentMaxLifecycle (FragmentStateAdapter.java:726)
  at androidx.viewpager2.adapter.FragmentStateAdapter$FragmentMaxLifecycleEnforcer$3.onStateChanged (FragmentStateAdapter.java:657)
  at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.java:354)
  at androidx.lifecycle.LifecycleRegistry.backwardPass (LifecycleRegistry.java:284)
  at androidx.lifecycle.LifecycleRegistry.sync (LifecycleRegistry.java:302)
  at androidx.lifecycle.LifecycleRegistry.moveToState (LifecycleRegistry.java:148)
  at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent (LifecycleRegistry.java:134)
  at androidx.fragment.app.Fragment.performDestroy (Fragment.java:3215)
  at androidx.fragment.app.FragmentStateManager.destroy (FragmentStateManager.java:774)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:350)
  at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete (SpecialEffectsController.java:742)
  at androidx.fragment.app.SpecialEffectsController$Operation.cancel (SpecialEffectsController.java:594)
  at androidx.fragment.app.SpecialEffectsController.forceCompleteAllOperations (SpecialEffectsController.java:329)
  at androidx.fragment.app.SpecialEffectsController.executePendingOperations (SpecialEffectsController.java:264)
  at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:2202)
  at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:2100)
  at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:2002)
  at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3136)
  at androidx.fragment.app.FragmentManager.dispatchActivityCreated (FragmentManager.java:3070)
  at androidx.fragment.app.FragmentController.dispatchActivityCreated (FragmentController.java:251)
  at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:501)
  at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:210)
  at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1436)
  at android.app.Activity.performStart (Activity.java:8124)
  at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3527)
  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
  at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2108)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:236)
  at android.app.ActivityThread.main (ActivityThread.java:7876)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:656)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:967)

Библиотека gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "my.price.finder"
        minSdkVersion 26
        targetSdkVersion 30
        versionCode 400022
        versionName "2.0.1"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    splits {
        abi {
            enable true
            reset()
            include "x86", "armeabi-v7a", "arm64-v8a", "x86_64"
            universalApk false
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {
    implementation "androidx.fragment:fragment-ktx:1.3.2"
    implementation 'com.google.android.material:material:1.3.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
}

Ответы (1 шт):

Автор решения: Anton

Одна из причин возникновения этой ошибки это использование parentFragmentManager вместо childfragmentmanager. Ошибка происходит во время поворота дисплея и уведомление об ошибке полностью идентично вышеуказанному. Нужно использовать childfragmentmanager. Однако в моем случае в манифесте с самого начало было отключено изменение ориентации android:screenOrientation="portrait". Следовательно, данная ошибка не должна была быть. Я поменял на childfragmentmanager, если заново придет уведомление, значит проблема в чем-то другом.

 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
    {
        val root = inflater.inflate(R.layout.main_layout, container, false)
        val tablayot = root.findViewById<TabLayout>(R.id.myTablayout)
        val viewPager2 = root.findViewById<ViewPager2>(R.id.myViewpager)
        val adapter = MyPageAdapter(childfragmentmanager, lifecycle)
        viewPager2.adapter = adapter
        TabLayoutMediator(tablayot, viewPager2)
        {
            tab, position ->
            when(position)
            {
                0 -> {tab.text = "FirstPage"}
                1 -> {tab.text = "SecondPage"}
                else -> {tab.text = "MainPage"}
            }
        }.attach()
        return root
    }
→ Ссылка