问题描述
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()
}
}
<?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()
}