在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
没有这样的属性
- 在自定义视图构造函数中获取android:ellipsize属性的值
- Android Kotlin子onClick阻止父OnTouch
- Kotlin Dagger2找不到符号ApplicationModule_ProvideApplicationFactory
- 纵向模式下的相机横向预览
- Kotlin – 在另一个对象(不是类)中的伴侣对象的替代?
- 以编程方式设置android形状颜色
- com.android.tools.build:gradle版本高于2.0.0时,无法在物理设备上运行/部署应用程序
- 运行Android(使用Kotlin编写)使用Gradle2.0.0-alpha插件编译的项目时出错
- Kotlin:创建扩展函数文件?加