在我的Android项目中,我有两个布局:num_info和num_info_pack。两者都有id“circle”的视图。所以我认为通过layout_name.circle引用这些视图可以解决问题:
val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false)
inetView.circle.setBackgroundResource(background)
但圆圈用红色加下划线,并说:
重载分辨率模糊。所有这些功能都匹配。
public val View.circle:查看!定义于 kotlinx.android.synthetic.main.num_info_pack.view
public val View.circle:RelativeLayout!定义于 kotlinx.android.synthetic.main.num_info_inet_plus_pack.view
如果我特意说inetView.circle,为什么我在谈论哪个圈子?
答案 0 :(得分:6)
这里的解决方案是进口。您必须导入两个布局,如
import kotlinx.android.synthetic.main.num_info_pack
和
import kotlinx.android.synthetic.main.num_info_inet_plus_pack
删除其中一个并使用您要导入的相应布局文件保留一个。它应该工作正常。
答案 1 :(得分:4)
除了已经非常好的答案之外,如果项目中的多个布局中具有相同的ID,则选择哪一个并不重要。无论定义哪种布局,类似的ID最终都指向同一视图。因此,您可以放弃其他导入,只留下当前activity/fragment/view
希望有所帮助
答案 2 :(得分:2)
我现在没有掌上Android工作室,但我认为这将解决您的问题:
package XXX
import kotlinx.android.synthetic.main.num_info_inet_plus_pack.view.circle as inetViewCircle
import kotlinx.android.synthetic.main.num_info_pack.view as circle
//...
val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false)
inetViewCircle.setBackgroundResource(background)
不知道这是否有效,因为我现在无法对其进行测试。请告诉我它是否正常工作。
问题是名称冲突,所以我认为导入别名可能会有所帮助。