我尝试获取对象中对EditText的引用。导入import kotlinx.android.synthetic.main.dialog_save_recording.dialog_save_recording_edittext_name
在对象中不起作用。
我的代码:
object Dialog {
fun createDialog(context: Context, layoutId: Int? = null) {
val builder = AlertDialog.Builder(context)
if (layoutId != null) {
builder.setView(layoutId)
builder.setPositiveButton(context.getString(R.string.dialog_save_button_text)) { _, _ ->
//get the input of the editText here
}
... //not important for my question
我想参考的布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:padding="@dimen/dialog_padding"
android:layout_margin="@dimen/dialog_margin">
<TextView
android:id="@+id/dialog_save_recording_textview_name"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/dialog_save_recording_name"
android:textSize="@dimen/text_size_normal" />
<EditText
android:id="@+id/dialog_save_recording_edittext_name"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="@string/dialog_save_recording_name_hint"
android:importantForAutofill="no"
android:inputType="text"/>
</LinearLayout>
我尝试过使用findViewById或使用layoutId,但目前没有成功。我正在寻找一种不继承Activity()对象的解决方案。
任何人知道如何执行此操作吗?
您首先需要构建对话框:
val dialog = builder.build()
然后您可以使用:
val editText = dialog.requireViewById(R.id.dialog_save_recording_edittext_name)
应用更改后,请不要忘记显示对话框:
dialog.show()