视图对象未显示在代码中我正在制作自定义对话框

问题描述

open class BaseActivity : AppCompatActivity() {

private var doubleBackToExitpressedOnce = false
private lateinit var mProgressDialog: Dialog

override fun onCreate(savedInstanceState: Bundle?) {
    val binding = ActivityBaseBinding.inflate(layoutInflater)

    super.onCreate(savedInstanceState)

}


fun showProgressDialog(text: String) {
    mProgressDialog = Dialog(this)
    mProgressDialog.setContentView(R.layout.dialog_progress)
    mProgressDialog.tv_progress_text.text = text

    mProgressDialog.show()



}

}

//这是我自定义Dialog的XML文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:padding="10dp">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="50dp"
        android:layout_height="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/tv_progress_text"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
    android:id="@+id/tv_progress_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:text="@string/pleaseWait"
    android:textSize="16sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toEndOf="@+id/progressBar"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是我的代码(kotlin),我使用视图绑定。我无法从函数 showProgressDialog 中的自定义对话框 xml 文件访问视图对象。但是,我试图在 fun showProgressDialog 中为自定义对话框创建一个绑定实例,但这也不起作用。谁能告诉我,有什么问题以及我应该如何从自定义 Dialog xml 文件访问视图对象。 setContentView 也没有用。

解决方法

要在自定义对话框中使用视图绑定,您必须使用其生成的方法来扩充自定义对话框,您不能直接使用它。

由于您没有写下自定义对话框布局文件的名称,我假设它是 customDialog.xml。现在您可以使用它来膨胀并显示这个自定义对话框。

fun showProgressDialog(text: String) {
    mProgressDialog = Dialog(this)
    val customDialogBinding = CustomDialogBinding.inflate(layoutInflater,binding.root,false)
    mProgressDialog.setContentView(customDialogBinding.root)
    customDialogBinding.tv_progress_text.text = text
    mProgressDialog.show()
}