Naz*_*rke 8 android kotlin kotlin-android-extensions
在我的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)
Run Code Online (Sandbox Code Playgroud)
但圆圈用红色加下划线,它说:
过载分辨率模糊.所有这些功能都匹配.
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,为什么我在谈论哪个圈子?
这里的解决方案是进口.您必须导入两个布局,如
import kotlinx.android.synthetic.main.num_info_pack
Run Code Online (Sandbox Code Playgroud)
和
import kotlinx.android.synthetic.main.num_info_inet_plus_pack
Run Code Online (Sandbox Code Playgroud)
删除其中一个,并使用您要导入的相应布局文件保留一个.它应该工作正常.
除了已经非常好的答案之外,如果您在项目中的多个布局中具有相同的ID,那么选择哪一个ID无关紧要。无论定义了哪种布局,相似的ID最终都指向同一视图。因此,您可以舍弃其他导入,而仅保留当前对您重要的布局activity/fragment/view
希望能有所帮助
我现在手头没有 android studio,但我认为这可以解决你的问题:
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)
Run Code Online (Sandbox Code Playgroud)
不知道这是否有效,因为我现在无法测试。请让我知道它是否有效。
问题是名称冲突,所以我认为导入别名可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
2063 次 |
| 最近记录: |