object - 使用 kotlin 在对象中获取视图
问题描述
我尝试在对象中获取对 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()
推荐阅读
- android - 颤振本地通知多色图标
- amazon-web-services - 如何安全地将 .pfx 证书添加到 aws lambda
- javascript - 运行循环以检查 If undefined
- java - 无法实例化可遍历解析器类 org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver
- vue.js - 未捕获的类型错误:无法读取未定义的属性“getters”
- javascript - 如何删除两个不同标签之间包含的少量标签?
- actions-on-google - Google 请求同步操作返回 http 错误 500
- mongodb - 无法在 Gitpod 上获取数据
- react-native - React Native Picker 不会保持新选择的选项
- spring-boot - 使用 Spring Boot WebSocket RabbitMQ 在多租户应用程序中发送消息