使用Kotin android extensions我可以避免使用findViewById
,但是
我不知道如何命名id以便在属性上使用它。
我发现有两种选择:
android.support.test.espresso.AmbiguousViewMatcherException:'with id:... / mainLayout'匹配层次结构中的多个视图。
这是因为我在TabLayout中有两个具有相同ID的片段:
<LinearLayout android:id="@+id/mainLayout"
"@+id/loginMainLayout"
和"@+id/signUpMainLayout"
但是我必须使用像signUpMainLayout.doSomething()
这样的变量。
注意:我不喜欢在这种情况下使用
_
,因为那不是一个好code style。
还有其他选择吗?
答案 0 :(得分:3)
我无法理解为什么当名称位于Kotlin和Java中常见的"@+id/loginMainLayout"
时,您不使用"@+id/signUpMainLayout"
和lowerCamelCase
。如您所说,用例将是signUpMainLayout.doSomething()
。
无论如何,在整个应用程序中使用id的唯一名称是一个好习惯。这不是因为Espresso,而是主要是当您看到ID的名称时知道与ID关联的视图的位置。如果你使用这种风格并不难。 例如:
在fragment_contacts
:
<TextView id="+id/contactNameText
android:text="John Smith" .../>
<ImageView id="+id/contactUserImage .../>
断言:Image
中有contactUserImage
因为知道它是ImageView
。
在fragment_settings
:
<TextView id="+id/settingsNotificationText
android:text="Turn notifications on/off" .../>
<checkBox id="+id/settingsNotificationCheck .../>
答案 1 :(得分:2)
就我而言,我一直在使用这个约定https://jeroenmols.com/blog/2016/03/07/resourcenaming/, 但没有下划线和骆驼案例惯例。
如果您注意到将控件拖到视图中,在android studio中,它会使用驼峰大小写约定id。
虽然变量的名称可能有点大,但你总是可以在变量的声明中使用val或var。
问候