当前位置:  开发笔记 > Android > 正文

Kotlin的合成属性发生冲突

如何解决《Kotlin的合成属性发生冲突》经验,为你挑选了1个好方法。

我是Kotlin的新手.在其他非常有趣的事情中,我发现Android扩展,根据文档,应该让我使用活动的视图,而不需要findViewById.

实际上,通过在我的导入中添加这一行,它可以很好地工作:

import kotlinx.android.synthetic.main..*

问题是当两个不同的布局包含具有相同id的窗口小部件(即合成属性的相同名称)时,
例如两个不同TextView的带有id的s txtTitle.假设第一个是活动,第二个属于适配器内部使用的布局.

当我尝试在第一个TextView(活动的一个)上调用一个方法时,我看不到预期的结果,就像调用将在另一个视图上完成一样.作为对此的确认,当我打电话时txtTitle.parent,我看到了另一方的父母和兄弟姐妹txtTitle而不是预期的兄弟姐妹.

难道我做错了什么?我发现绕过这个问题的唯一方法是在我的所有布局中使用不同的名称或继续使用findViewById,但浪费这种语言功能会很遗憾......



1> lukle..:

关于进口的kotlin文件说

如果存在名称冲突,我们可以通过使用as关键字在本地重命名冲突实体来消除歧义

因此,您可以尝试使用不同的别名导入布局:

import kotlinx.android.synthetic.main..* as lActivity
import kotlinx.android.synthetic.main..* as lView

并将textviews与相应的限定符一起使用:lActivity.txtTitlelView.txtTitle


我不能在多个import语句中使用"as"关键字,IDE(Android Studio)通过消息"无法将所有导入的项重命名为一个标识符"向我发出警告.此外,在我的活动中,我没有导入布局,因为它由片段(附加到活动)使用,而不是由活动使用.
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有