это мой первый вопросИспользование точек в XML идентификаторами
В Java я никогда не имел эту проблему раньше.
я провел два дня, потому что у меня была проблема только на расчетном режиме на Android студии Раздувание 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.TypeCastException: нуль не может быть приведен к ненулевым типа android.widget.TextView в ... $ mLabel $ 2 .invoke (CustomView.kt: 22))
Обычно я использую <layout>[.<where_container>].<name>
шаблон назвать идентификаторы и строки на XMLs (например: android:id="@+id/main.description_container.title"
)
Это автоматически переводится в R.id.main_description_container_title
(уведомление точка становится подчеркиванием) в коде
Проблема была решена, когда я заменяю эти точки символами подчеркивания вручную в XML
Я искал условные обозначения, объясняющие, почему точки не должны использоваться в идентификаторах или именах строк, но безуспешно. Я хочу знать, какова реальная проблема с этим соглашением о названии. Этого действительно следует избегать?
Должен ли я просто отказаться от идеи и просто подчеркнуть пользователя? Глядя на это проблема только на котлине, может быть, какая-то конфигурация градиента?
Спасибо заранее
Я нашел этот ответ, указывающий на более значительную проблему: https://stackoverflow.com/questions/24140877/do-string-resource-xml-files-allow-invalid-java-variables-as-name-attributes – crgarridos