【发布时间】:2016-07-12 21:10:36
【问题描述】:
我有一段代码检查视图是否可见
import kotlinx.android.synthetic.main.activity_layout.*
val isOverflowPanelShown: Boolean
get() = overflow_panel.visibility != View.GONE
之前的代码抛出异常
java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.ScrollView
at com.company.app.Activity.isOverflowPanelShown(Activity.kt:362)
视图是ScrollView 类的实例,但是 kotlin 认为它是FrameLayout。在引发错误的同一位置调用 findViewById() 会正确返回 ScrollView。我发现在应用程序的不同布局中有一个FrameLayout在同一id下。
我正在膨胀以下布局
activity_layout
<ScrollView
android:id="@+id/overflow_panel"
android:layout_width="300dp"
android:layout_height="wrap_content"
/>
在我在完全不同的地方使用的另一个布局中,有一个具有相同 id 的不同视图。
form_component_main
<FrameLayout
android:id="@+id/overflow_panel"
android:layout_width="250dp"
android:layout_height="wrap_content"
/>
【问题讨论】:
-
我无法重现该错误。您能否提供更多关于
activity_layout和form_component_main位于何处的详细信息?也许,这些布局在不同的模块中?如果您可以在一个小型示例项目中重现此行为,那就太好了。 -
我正在尝试同样的问题。你解决了吗?
-
没有,从那以后我就再也没有听说过它了。
标签: android kotlin kotlin-android-extensions