使用kotlin在对象中获取视图

问题描述 投票:-1回答:1

我尝试获取对象中对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()对象的解决方案。

任何人知道如何执行此操作吗?

object kotlin view
1个回答
0
投票

您首先需要构建对话框:

val dialog = builder.build()

然后您可以使用:

val editText = dialog.requireViewById(R.id.dialog_save_recording_edittext_name)

应用更改后,请不要忘记显示对话框:

dialog.show()

© www.soinside.com 2019 - 2024. All rights reserved.