什么id名称约定对Kotlin android扩展很有用

时间:2017-04-26 03:50:33

标签: android android-espresso kotlin-android-extensions

使用Kotin android extensions我可以避免使用findViewById,但是 我不知道如何命名id以便在属性上使用它。

我发现有两种选择:

  1. 使用ids 的简单名称,但如果我将其与片段一起使用,我可能会遇到麻烦
  2.   

    android.support.test.espresso.AmbiguousViewMatcherException:'with id:... / mainLayout'匹配层次结构中的多个视图。

    这是因为我在TabLayout中有两个具有相同ID的片段:

    <LinearLayout android:id="@+id/mainLayout"
    
    1. 所有者姓名:"@+id/loginMainLayout""@+id/signUpMainLayout"
    2. 但是我必须使用像signUpMainLayout.doSomething()这样的变量。

        

      注意:我不喜欢在这种情况下使用_,因为那不是一个好code style

      还有其他选择吗?

2 个答案:

答案 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。

问候