首页 > 解决方案 > BaseTransientBottomBar 和相关的错误,以及如何解决它

问题描述

首先,我试图解决以下问题:

第 1 步。我在我的 BaseActivity 和 BaseActivity 抽象类中放置了一个方法,以了解 Activity 何时停止以及视图(片段的根视图)何时被销毁 [在这两种情况下都返回 true,但在事件之前返回 false(onStop( ), onViewDestroyed()) 被调用]。

第 2 步。当两者中的任何一个都返回 true 时,我已阻止显示唯一的 SnackBar。还检查了 BaseActivity 的 isFinishing()。

但是错误并没有消失。

我想了解更多关于这门课的信息:

android.support.design.widget.BaseTransientBottomBar

以及与之相关的内部异常,以及如何解决以下问题:

08-25 16:45:50.826 5618-5688/com.my_package D/CrashlyticsCore: Session 5B8139230285-0001-15F2-C62ED7C4B2D1 has fatal exception: true
08-25 16:45:50.827 5618-5688/com.my_package D/CrashlyticsCore: Session 5B8139230285-0001-15F2-C62ED7C4B2D1 has non-fatal exceptions: false
08-25 16:45:51.481 5618-5618/com.my_package E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.my_package, PID: 5618
    java.lang.IllegalStateException: ScrollView can host only one direct child
        at android.widget.ScrollView.addView(ScrollView.java:251)
        at android.support.design.widget.BaseTransientBottomBar.showView(BaseTransientBottomBar.java:428)
        at android.support.design.widget.BaseTransientBottomBar$1.handleMessage(BaseTransientBottomBar.java:176)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:168)
        at android.app.ActivityThread.main(ActivityThread.java:5845)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
08-25 16:45:53.654 5618-5688/com.my_package D/CrashlyticsCore: Removing report at /data/user/0/com.my_package/files/.Fabric/com.crashlytics.sdk.android.crashlytics-core/fatal-sessions/5B8139230285-0001-15F2-C62ED7C4B2D1.cls
08-25 16:45:58.626 9576-9643/com.my_package D/CrashlyticsCore: Session 5B813A670174-0002-15F2-C62ED7C4B2D1 has fatal exception: false
08-25 16:45:58.627 9576-9643/com.my_package D/CrashlyticsCore: Session 5B813A670174-0002-15F2-C62ED7C4B2D1 has non-fatal exceptions: false
    No events present for session ID 5B813A670174-0002-15F2-C62ED7C4B2D1
    Removing session part files for ID 5B813A670174-0002-15F2-C62ED7C4B2D1

细节:

请注意,我的是Desire 816 HTC设备,它从KitKat开始,现在升级到MarshMallow,但仍然存在KitKat的错误,例如相机不释放资源,然后在拍摄第一张照片后崩溃。

但是必须有一些解决方案来防止这种情况,例如以下解决方案:

https://stackoverflow.com/a/52014209/787399

我最诚挚的问候。

标签: androidexceptionruntime

解决方案


我使用自己的答案解决了它:

当我在 onDestroy() 中使用布尔变量并对其进行检查时,我知道我不应该显示 Snackbar,因为它使用 view 作为第二个参数。解释链接:

片段 onStop() 与 onDetach()、onDestroy() 或 onDestroyView() 相同?

也因为以下链接中很好地描述的限制:

https://developer.android.com/topic/libraries/architecture/lifecycle#kotlin

快乐编码:-)


推荐阅读