首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Kotlin合成不起作用,而应用程序有多种味道

Android Kotlin合成不起作用,而应用程序有多种味道
EN

Stack Overflow用户
提问于 2019-08-16 10:07:00
回答 2查看 599关注 0票数 2

Kotlin发布了新的kotlinx.android.synthetic,它删除了样板代码。Kotlin合成工作良好,而应用程序只有一种味道。

在我的例子中,有更多的350+口味和一些有一个不同的布局XML文件。所有其他视图ids在所有风味和单一活动(Kotlin类)中对所有这些味道都是相同的。我的科特林课是我的主要口味。

所以应用程序的结构就像:

  1. 类: app -> src -> main -> java -> MyActivity.kt
  2. 主要风味: app -> src -> main -> res -> layout -> my_activity.xml
  3. flavourCoffee : app -> src -> -> res -> layout -> my_activity.xml
  4. flavourTea : app -> src -> tea -> res -> layout -> my_activity.xml

当我尝试导入kotlinx.android.synthetic.main.my_activity.*导入时,它在主要风格上工作得很好。

但是,当选择不同的味道,它没有工作。

目前,我正在使用一个棘手的解决方案。删除kotlin合成导入和添加下面的代码,然后它的工作罚款。

代码语言:javascript
复制
val tvUsrname = findViewById<TextView>(R.id.tvUsername)

其他50个视图将在ids中找到视图。

但我不想为findViewById编写样板代码。

请告诉我还有什么其他的解决办法。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-08-04 17:19:54

由于不推荐使用kotlin-android-extension,所以可以使用ViewBinding。我尝试了我的口味,它工作很好,没有任何问题时,改变活跃的味道。

票数 1
EN

Stack Overflow用户

发布于 2021-02-25 15:30:05

如果您希望实现更少的更改,一个可能的解决方案是调用findViewById。如果您正在处理片段,则可以:

代码语言:javascript
复制
class TvgFragment : Fragment() {
    private lateinit var myImage: ImageView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val root = inflater.inflate(R.layout.my_fragment, container, false)
        myImage = root.findViewById(R.id.my_image)
        return root
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        myImage.set...
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57522747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档