Как найти причину 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 шт):
Одна из причин возникновения этой ошибки это использование 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
}