【问题标题】:RemoveView is not supported in AdapterView on Android 9 DevicesAndroid 9 设备上的 AdapterView 不支持 RemoveView
【发布时间】:2020-05-16 03:46:46
【问题描述】:

我的应用在每台 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 函数获取该异常是正常的,但我无法覆盖它。

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

有人可以帮忙吗?

【问题讨论】:

    标签: android android-recyclerview android-9.0-pie


    【解决方案1】:

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

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

    代替:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多