如何使按钮直接从功能可用

How to make button available directly from function

您好,我正在制作一个遵循 MVVM 结构的应用程序,我查看了本教程 https://www.youtube.com/watch?v=d7UxPYxgBoA&t=152s 在本教程中,教授使用的代码看起来像这样...

private fun initializeUi() {
    val factory = InjectorUtils.provideQuotesViewModelFactory()
    val viewModel = ViewModelProviders.of(this, factory)
            .get(QuotesViewModel::class.java)

    viewModel.getQuotes().observe(this, Observer { quotes ->
        val stringBuilder = StringBuilder()
        quotes.forEach{ quote ->
            stringBuilder.append("$quote\n\n")
        }
        textView_quotes.text = stringBuilder.toString()
    })

    button_add_quote.setOnClickListener {
        val quote = Quote(editText_quote.text.toString(), editText_author.text.toString())
        viewModel.addQuote(quote)
        editText_quote.setText("")
        editText_author.setText("")
    }
}

如您所见,他没有初始化变量来查找按钮。这怎么可能......我试图在片段中做到这一点但它不起作用?告诉我您是否需要更多代码,我会添加它。

阅读官方文档中的 Kotlin 合成器有很大帮助。

它使用 Kotlin 合成器,这是一种将布局 xml 绑定到 activity 或片段 class 的方法。您可以在 GitHub 上的项目源代码中看到它:

https://github.com/ResoCoder/mvvm-android-architecture-crash-course/blob/master/app/src/main/java/com/resocoder/mvvmbasicstut/ui/quotes/QuotesActivity.kt#L10

import kotlinx.android.synthetic.main.activity_quotes.*

但是,Kotlin 合成器已被弃用,您应该改用视图绑定。更多信息在这里:

https://developer.android.com/topic/libraries/view-binding/migration