【问题标题】:java.lang.ClassCastException: android.widget.TableLayout cannot be cast to java.lang.Booleanjava.lang.ClassCastException:android.widget.TableLayout 不能转换为 java.lang.Boolean
【发布时间】:2021-02-05 12:02:12
【问题描述】:

大家好, 我对 Kotlin 很陌生,正在尝试检查是否存在膨胀的视图。如果是这样,我想删除它并用另一个充气替换它。

问题是,我尝试检查此元素是否以 JavaScript 样式存在,但是 - 但是 - 这种方法在 Kotlin 中不起作用。它在我的运行日志中创建以下错误:

  java.lang.ClassCastException: android.widget.TableLayout cannot be cast to java.lang.Boolean

产生此错误的代码的实际 sn-p:

   val tableParentFallbackView = (highlightedTable?.parent as ViewGroup) as LinearLayout

        if(tableParentFallbackView?.findViewById(R.id.highlight_number_1)) {
            tableParentFallbackView.removeView(findViewById(R.id.highlight_number_1))
        }

所以问题是:如何检查 Kotlin 中是否已经存在视图? ^^

【问题讨论】:

    标签: kotlin view


    【解决方案1】:

    现在您正在使用 TableLayout? 作为布尔值。相反,您需要检查它是否不为空,例如: tableParentFallbackView?.findViewById(R.id.highlight_number_1) != null

    【讨论】:

    • 这正是我的第一个猜测,但 IDE 不断打破 Gradle 构建并显示错误消息:“没有足够的信息来推断类型变量 T”
    【解决方案2】:

    好的,在 cmets 的一些帮助下,我找到了解决方案。我试图在 TableLayout 中选择一个 LinearLayout - 因此我必须像这样对 Selector 进行类型转换:

       if(tableParentFallbackView.findViewById<LinearLayout>(R.id.highlight_number_1) != null) {
                tableParentFallbackView.removeView(findViewById(R.id.highlight_number_1))
            }
    

    感谢您的支持 - 我希望它会在未来帮助某人,解决类似的问题^^

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多