Android 9 台设备上的 AdapterView 不支持 RemoveView

RemoveView is not supported in AdapterView on Android 9 Devices

我的应用程序在每个 Android 8 台设备上运行良好,但在 运行 Android 9 台设备上崩溃。

我正在尝试升级它,但我得到了这个:

java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
        at android.widget.AdapterView.removeView(AdapterView.java:947)
        at android.view.ViewOverlay$OverlayViewGroup.add(ViewOverlay.java:195)
        at android.view.ViewGroupOverlay.add(ViewGroupOverlay.java:72)
        at android.transition.TransitionUtils.createViewBitmap(TransitionUtils.java:171)
        at android.transition.TransitionUtils.copyViewImage(TransitionUtils.java:103)
        at android.transition.Visibility.onDisappear(Visibility.java:383)
        at android.transition.Visibility.createAnimator(Visibility.java:252)
        at android.transition.Transition.createAnimators(Transition.java:732)
        at android.transition.TransitionSet.createAnimators(TransitionSet.java:396)
        at android.transition.Transition.playTransition(Transition.java:1779)
        at android.transition.TransitionManager$MultiListener.onPreDraw(TransitionManager.java:315)
        at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:991)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3024)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1897)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8514)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
        at android.view.Choreographer.doCallbacks(Choreographer.java:761)
        at android.view.Choreographer.doFrame(Choreographer.java:696)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7063)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)

我没有在我的代码中使用任何 "removeView" 函数,它只在库中。 我的 gradle 文件如下所示:

apply plugin: 'com.android.application'

android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
    compileSdkVersion 28
    buildToolsVersion '28.0.3'
    defaultConfig {
        applicationId "fooooo"
        minSdkVersion 25
        targetSdkVersion 28
        compileSdkVersion 28
        versionCode 14
        versionName "1.0.5"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    ......
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation project(':FOOLibrary')
    implementation files('libs/ormlite-core-5.0.jar')
    implementation files('libs/ormlite-android-5.0.jar')
    implementation files('libs/ormlite-android-5.0-javadoc.jar')
    implementation 'com.google.android.gms:play-services-vision:11.0.4'
    implementation 'com.google.android.gms:play-services-location:11.0.4'
    implementation 'com.android.support:appcompat-v7:25.3.1'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
    implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.google.code.gson:gson:2.7'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
    testImplementation 'junit:junit:4.12'
}

我正在尝试更改库版本,但似乎一切正常。 我在 Android 文档中发现 removeView 函数获取该异常是正常的,但我无法覆盖它。

我可以向您展示片段中的代码和我正在使用的适配器,但其中没有 removeView。

有人可以帮忙吗?

我终于得到了答案。 问题出在片段管理中。我正在使用这个:

fragmentManager.beginTransaction().replace(R.id.main_container,fragment).commit();

而不是:

fragmentManager.beginTransaction().add(R.id.main_fl_container,fragment).commit();

我不确定从 Android 8 到 Android 9 是什么行为改变导致它不起作用,但现在它起作用了。 抱歉,如果我之前没有显示这些行,但异常没有指定任何代码行,我必须自己弄清楚。