在xml ids中使用点

这是我的第一个问题

在Java中,我从来没有遇到过这个问题。

我花了两天,因为我刚刚在Android Studio的设计模式上用kotlin夸大了一个CustomView的问题 。 膨胀后,我有一个findByView = null。 运行应用程序,一切都是正确的

View.inflate(context, R.layout.widget_navigation_section_button, this) mLabel = findViewById(R.id.navigation_section_title) mLabel.setText("something") 

这抛出一个NPE (真正的kotlin:kotlin.TypeCastException:null不能转换为非空类型android.widget.TextView在… $ mLabel $ 2.invoke(CustomView.kt:22))

通常,我使用<layout>[.<where_container>].<name>模式来命名XMls上的id和字符串(例如: android:id="@+id/main.description_container.title"
这是在代码中的R.id.main_description_container_title自动翻译(注意点变成下划线)

当我用XML手动替换这些点时,问题就解决了

我正在寻找名称约定,解释为什么点不应该用于ID或字符串命名,但没有成功。 我想知道这个名字约定是什么真正的问题。 这应该真的避免吗?

我应该放弃这个想法,只是用户下划线? 看着这是一个问题,只是在kotlin,也许一些gradle配置?

先谢谢你

你不能使用点,因为下面的表达式R.id.main.description_container.title将尝试找到具有类型Int成员main ,然后尝试查找属性description_container ,但是Int没有这样的属性