Android 视图的 Kotlin 合成 属性 差异?
Kotlin synthetic property difference for Android views?
Kotlin Android extension documentation 表示您基本上可以通过使用导入语句来执行 findViewById()
的快捷方式。但是,导入特定视图 kotlinx.android.synthetic.main.<layout-file-name>.<view-id>
和从 kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id>
导入有什么区别?如果您使用前者,IDE 会向我显示三个相同的视图 ID,Activity、Dialog 和 Fragment 各一个。如果您选择后者,它只会显示一次视图 ID 名称。
IDE 提示显示了 class 类型,您可以在其中使用视图引用:Activity、片段、对话框或视图。当您键入 import 语句时,IDE 显示它适用的所有类型的完成。但是,当您尝试在 class 中使用它(没有 import 语句)时,IDE 会向您显示 class 正在扩展的特定类型的导入提示。
例如,在 activity class 中,扩展 AppCompatActivity
,你会得到导入提示
<view-id> from <layout-file-name> for Activity
但是,如果您的 class 从 View
或子 class 延伸,您会得到:
<view-id> from <layout-file-name> for View
关于为什么有多个选择,不同类型的视图缓存的实现可能不同。 More on this here
Kotlin Android extension documentation 表示您基本上可以通过使用导入语句来执行 findViewById()
的快捷方式。但是,导入特定视图 kotlinx.android.synthetic.main.<layout-file-name>.<view-id>
和从 kotlinx.android.synthetic.main.<layout-file-name>.view.<view-id>
导入有什么区别?如果您使用前者,IDE 会向我显示三个相同的视图 ID,Activity、Dialog 和 Fragment 各一个。如果您选择后者,它只会显示一次视图 ID 名称。
IDE 提示显示了 class 类型,您可以在其中使用视图引用:Activity、片段、对话框或视图。当您键入 import 语句时,IDE 显示它适用的所有类型的完成。但是,当您尝试在 class 中使用它(没有 import 语句)时,IDE 会向您显示 class 正在扩展的特定类型的导入提示。
例如,在 activity class 中,扩展 AppCompatActivity
,你会得到导入提示
<view-id> from <layout-file-name> for Activity
但是,如果您的 class 从 View
或子 class 延伸,您会得到:
<view-id> from <layout-file-name> for View
关于为什么有多个选择,不同类型的视图缓存的实现可能不同。 More on this here