我为我的Kotlin应用程序创建了这个CustomDialog类:
class CustomDialog(private val context: Context) {
private lateinit var dialog: Dialog
lateinit var title: TextView
lateinit var message: TextView
fun show() {
dialog = Dialog(context)
dialog.setContentView(R.layout.dialog_custom)
dialog.window?.setBackgroundDrawable(null)
dialog.setCancelable(true)
title = dialog.findViewById(R.id.custom_title)
message = dialog.findViewById(R.id.custom_message)
dialog.create()
dialog.show()
}
}
对于不同类型的对话框,它应该是一个虚拟的,因为我不想每次都用不同的xml创建一个新的对话框。问题是,当我调用.setText方法来设置我想要显示的字符串时,我要么在使用lateinit时得到一个UnitializedPropertyException,要么在将其初始化为null时得到一个NullPointer,我无法理解如何解决这个问题。
设置文本的方法只是一个onclicklistener,它尝试在标题和消息上使用.setText(),然后使用.show()。
我来自Java背景,适应Kotlin给我带来了一些这样的问题。希望有人能为我指出正确的方向,提前感谢!
1条答案
按热度按时间bvk5enib1#
您查看过此文档吗?https://developer.android.com/develop/ui/views/components/dialogs#kotlin
对于自定义构建,有DialogFragment类。
你可以使用以下代码来实现这一点:
下面是带有构建器的CustomDialog类: