什么id名称约定是好的Kotlin机器人扩展
使用Kotin的Android扩展我可以避免使用findViewById
,但林不知道如何命名ID来使用它的属性。
我发现两个选项是:
- 使用简单的ID名称, 但如果我使用碎片,可能会遇到意式咖啡的麻烦 :
android.support.test.espresso.AmbiguousViewMatcherException:'与id:… / mainLayout'匹配层次结构中的多个视图。
这是因为我有一个TabLayout里面有两个相同ID的片段:
<LinearLayout android:id="@+id/mainLayout"
- 与所有者姓名:
"@+id/loginMainLayout"
和"@+id/signUpMainLayout"
但是,我将不得不使用像signUpMainLayout.doSomething()
这样的变量。
注意:在这种情况下,我不喜欢使用
_
,因为这不是一个好的代码风格 。
还有什么其他的选择?
当名称位于kotlin和java中常见的lowerCamelCase
中时,我无法"@+id/loginMainLayout"
为什么不使用"@+id/loginMainLayout"
和"@+id/signUpMainLayout"
。 用例就像你说的那样是signUpMainLayout.doSomething()
。
无论如何,这是一个很好的做法,在整个应用程序中使用id的唯一名称。 这不是因为Espresso的缘故,而是主要是当你看到ID的名字时,才知道与ID相关的视图。 如果你使用这种风格并不难。 例:
在fragment_contacts
:
<TextView id="+id/contactNameText android:text="John Smith" .../> <ImageView id="+id/contactUserImage .../>
断言: contactUserImage
有Image
是因为知道它是一个ImageView。
在fragment_settings
:
<TextView id="+id/settingsNotificationText android:text="Turn notifications on/off" .../> <checkBox id="+id/settingsNotificationCheck .../>