首页 > 解决方案 > Anko 从 Activity 访问 UI 中的值

问题描述

我是 anko 的新手,我已经很喜欢它了。但是,我似乎找不到从我的活动中访问我的 UI 设计中定义的值的方法。

这是一个例子:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //setContentView(R.layout.activity_main)
        MainActivityUI().setContentView(this)
    }
}



class MainActivityUI :AnkoComponent<MainActivity> {
    override fun createView(ui: AnkoContext<MainActivity>) = with(ui){
        frameLayout {
            var textDisplay = textView {
                text = "Hello World"
            }.lparams {
                width = wrapContent
                height = wrapContent
                gravity = Gravity.CENTER
            }
        }
    }
}

假设我希望能够从我的 MainActivity设置textDisplay的字符串值。如果我在 xml 中执行此操作,我可以继续使用f ind.View.by.id并使用setText并完成工作。但是,我似乎无法在 anko 中找到任何解决方案。

我从另一个 stackoverflow帖子中读到,我可以使用lateinit var像全局变量一样声明,然后从任何地方访问它。但这是唯一的方法吗?

我的意思是,我可以肯定我的所有 UI 功能代码都在 UI 活动中。但是如果项目变得更大,这将变得非常混乱,并且我正在尝试将我的 UI 设计与我的功能代码分开。

任何帮助将不胜感激。谢谢

编辑 1:更改为 var 以进行可变操作

标签: androidkotlinkotlin-android-extensionsanko

解决方案


推荐阅读