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 是什么行为改变导致它不起作用,但现在它起作用了。
抱歉,如果我之前没有显示这些行,但异常没有指定任何代码行,我必须自己弄清楚。
我的应用程序在每个 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 是什么行为改变导致它不起作用,但现在它起作用了。 抱歉,如果我之前没有显示这些行,但异常没有指定任何代码行,我必须自己弄清楚。