gpt4 book ai didi

android - Kotlin 自定义 View 引用 textview 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:50 36 4
gpt4 key购买 nike

我有一个自定义 View :

class CustomerView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {

private var txtName: TextView
private var txtAge: TextView

init {

View.inflate(context, R.layout.view_customer, null)

txtName = findViewById(R.id.txtTestName)
txtAge = findViewById(R.id.txtTestAge)

txtName.text = "Person"
txtAge.text = "61"

}
}

我的布局 view_customer 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/txtTestName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name" />

<TextView
android:id="@+id/txtTestAge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="age" />
</LinearLayout>

然而,当我在我的其他页面中调用它时,应用程序崩溃并提示

Caused by: java.lang.IllegalStateException: findViewById(R.id.txtTestName) must not be null at com.helcim.helcimcommercemobile.customviews.CustomerView.(CustomerView.kt:19)

这是我尝试分配 txtName

当我在布局 View 中使用它时,我真的不明白它是如何为空的。并且它的名字相同。

我是否错误地创建了自定义 View ?

最佳答案

您必须将父布局作为参数添加到“inflate”方法。

class CustomerView(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {

private var txtName: TextView
private var txtAge: TextView

init {

View.inflate(context, R.layout.view_customer, this)

txtName = findViewById(R.id.txtTestName)
txtAge = findViewById(R.id.txtTestAge)

txtName.text = "Derek"
txtAge.text = "23"

}
}

关于android - Kotlin 自定义 View 引用 textview 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51067968/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com