科特林合成整数无法转换为浮动按钮
kotlin synthetic Integer cannot be cast to floating button
为什么
val fabOpen = view.findViewById(R.id.fab_open) as FloatingActionButton
工作正常,没有出错,但是
的 kotlin 合成
val fabOpen = R.id.fab_open as FloatingActionButton
给我
java.lang.Integer cannot be cast to android.support.design.widget.FloatingActionButton
错误?他们都表明他们正在投射为 FloatingActionButton
。使用合成不仅代码更少,而且内存管理更好,我更愿意这样做。有什么我想念的吗?
****更新**** 我忘了说我正在尝试访问片段内部的 FloatingActionButton
如果这会有所作为。
R.id.fab_open
是一个生成的整数值,将被设置为您在 inflation 处的按钮的 ID,并且您可以像显示的那样使用 findViewById
进行查找。
将它投射到按钮上是行不通的,用 Java 的方式思考 (FloatingActionButton) 2688664731
。
如果您希望使用 Kotlin Android Extensions 及其合成属性,这些只是简单地命名为 ID 本身,但它们并非来自 R
class - 而您不需要将它们分配给变量或属性。您可以像这样简单地使用按钮:
fab_open.setOnClickListener { ... }
fab_open.visibility = View.VISIBLE
我找到问题了。
使用 kotlin synthetic 访问视图中的元素,如下所示:
import kotlinx.android.synthetic.main.chatter_main.view.*
class ChatterMain : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.chatter_main, container, false)
return view
}
上面我导入了view的kotlin synthetic,膨胀了view,然后
然后我像这样访问了元素的 ID:
view.fab_open.visibility = GONE
或 view.fab_open.SetOnClickListener {}
使用 Kotlin Synthetic,您不需要使用:
val fabOpen = R.id.fab_open as FloatingActionButton
所以我删除了那句话。
为什么
val fabOpen = view.findViewById(R.id.fab_open) as FloatingActionButton
工作正常,没有出错,但是
的 kotlin 合成val fabOpen = R.id.fab_open as FloatingActionButton
给我
java.lang.Integer cannot be cast to android.support.design.widget.FloatingActionButton
错误?他们都表明他们正在投射为 FloatingActionButton
。使用合成不仅代码更少,而且内存管理更好,我更愿意这样做。有什么我想念的吗?
****更新**** 我忘了说我正在尝试访问片段内部的 FloatingActionButton
如果这会有所作为。
R.id.fab_open
是一个生成的整数值,将被设置为您在 inflation 处的按钮的 ID,并且您可以像显示的那样使用 findViewById
进行查找。
将它投射到按钮上是行不通的,用 Java 的方式思考 (FloatingActionButton) 2688664731
。
如果您希望使用 Kotlin Android Extensions 及其合成属性,这些只是简单地命名为 ID 本身,但它们并非来自 R
class - 而您不需要将它们分配给变量或属性。您可以像这样简单地使用按钮:
fab_open.setOnClickListener { ... }
fab_open.visibility = View.VISIBLE
我找到问题了。
使用 kotlin synthetic 访问视图中的元素,如下所示:
import kotlinx.android.synthetic.main.chatter_main.view.*
class ChatterMain : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.chatter_main, container, false)
return view
}
上面我导入了view的kotlin synthetic,膨胀了view,然后 然后我像这样访问了元素的 ID:
view.fab_open.visibility = GONE
或 view.fab_open.SetOnClickListener {}
使用 Kotlin Synthetic,您不需要使用:
val fabOpen = R.id.fab_open as FloatingActionButton
所以我删除了那句话。