注入觀點我有一段代碼,檢查視圖是否可視Kotlinx從錯誤的佈局
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
類的實例,但是科特林認爲它的一個FrameLayout
。調用findViewById()在錯誤被拋出的地方,它正確返回ScrollView。我發現在不同的佈局在應用程序中有一個FrameLayout
在相同的編號。
我充氣以下佈局
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'位置的更多細節?也許,這些佈局是在不同的模塊? 如果你可以在一個小樣本項目中重現這種行爲,這將是非常好的。 – yanex
我正在試驗同樣的問題。你解決了嗎? – Massimo
不,從那以後我還沒有考慮過。 –