AdapterView 不支持 Android 8.1/9.0 removeView(View)

Posted

技术标签:

【中文标题】AdapterView 不支持 Android 8.1/9.0 removeView(View)【英文标题】:Android 8.1/9.0 removeView(View) is not supported in AdapterView 【发布时间】:2019-05-31 13:24:20 【问题描述】:

android 版本 8.1 和 9.0 中运行我的应用程序时,我收到“AdapterView 不支持 removeView(View)”异常。在以前的版本中,它运行良好。尽管错误是一致的,但它不会 100% 发生(这让我怀疑这是一个线程问题),也不是特定于特定适配器或列表视图的。例如,我从多个活动中访问相同的代码,它对一些人来说很好,而对另一些人来说总是失败。我还应该指出,在出现错误的任何情况下,我都不会调用 removeView。以下是异常的 LogCat 输出:

java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
    at android.widget.AdapterView.removeView(AdapterView.java:531)
    at android.view.ViewOverlay$OverlayViewGroup.add(ViewOverlay.java:195)
    at android.view.ViewGroupOverlay.add(ViewGroupOverlay.java:72)
    at android.transition.TransitionUtils.createViewBitmap(TransitionUtils.java:170)
    at android.transition.TransitionUtils.copyViewImage(TransitionUtils.java:104)
    at android.transition.Visibility.onDisappear(Visibility.java:380)
    at android.transition.Visibility.createAnimator(Visibility.java:249)
    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:977)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2349)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
    at android.view.Choreographer.doCallbacks(Choreographer.java:723)
    at android.view.Choreographer.doFrame(Choreographer.java:658)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

谁能指出我的解决方案?

【问题讨论】:

你解决了吗 同样的问题,网上任何地方0信息如何解决或什么原因。 【参考方案1】:

我最终继承了 ListView 并使用空方法覆盖了 removeView 和 addView。我怀疑这是解决此问题的正确方法,但它确实有效。

【讨论】:

以上是关于AdapterView 不支持 Android 8.1/9.0 removeView(View)的主要内容,如果未能解决你的问题,请参考以下文章

Android高级控件--AdapterView与Adapter

Android控件第3类——AdapterView

Android开发:ListViewAdapterViewRecyclerView全面解析

Android开发:ListViewAdapterViewRecyclerView全面解析

Android里的AdapterView中OnItemClickListener监听器四个参数的含义

在层次结构中找不到匹配的视图:可从类分配:类 android.widget.AdapterView