通过继承另一个CustomView创建CustomView
Creating CustomView by inheriting another CustomView
我正在处理一个项目,我必须在其中使用不同类型的自定义视图。这些自定义视图共享一些通用功能,因此我决定创建一个超类并将所有通用功能放在那里。让我们调用我的超类 BaseCustomView 和子类 ACustomView.
这是我的 BaseCustomView 的样子:
open class BaseCustomView@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
FrameLayout(context, attrs, defStyleAttr) {
protected fun saveDetails() {
// Saving details
}
}
我从我的子类中调用这个函数。这是我的 ACustomView 的样子:
class ACustomView@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : BaseCustomView(context, attrs, defStyleAttr) {
fun startProcess() {
saveDetails()
//Start the process
}
}
到这里为止看起来还不错。现在,当我在片段中使用 ACustomView 并使用 viewBinding 调用 startProcess() 函数时,会出现以下错误:
Unresolved reference: startProcess
这是我在片段中调用函数的代码:
binding.customView.startProcess()
谁能帮我解决这个问题?我不知道我做错了什么。任何帮助表示赞赏。谢谢!
生成的绑定 class 创建了 View
class 而不是 ACustomView
.
视图绑定库在处理您的自定义视图时出现问题。
您可以使用 findViewById(...)
获取视图。
我相信视图绑定确实支持自定义视图,所以如果我能找到让它工作的方法,我会在这里更新。
终于,我可以让它工作了。正如@ShlomiKatriel 所解释的,我遇到这个问题是因为生成的绑定 class 创建了一个 View
class 而不是 ACustomView
.
我能够通过首先使用 findViewById()
、运行 应用程序然后将 findViewById()
替换为生成的绑定 class 来解决这个问题。出于某种原因,在使用 findViewById()
之后,它会生成正确的绑定 class。 ♂️
我正在处理一个项目,我必须在其中使用不同类型的自定义视图。这些自定义视图共享一些通用功能,因此我决定创建一个超类并将所有通用功能放在那里。让我们调用我的超类 BaseCustomView 和子类 ACustomView.
这是我的 BaseCustomView 的样子:
open class BaseCustomView@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) :
FrameLayout(context, attrs, defStyleAttr) {
protected fun saveDetails() {
// Saving details
}
}
我从我的子类中调用这个函数。这是我的 ACustomView 的样子:
class ACustomView@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : BaseCustomView(context, attrs, defStyleAttr) {
fun startProcess() {
saveDetails()
//Start the process
}
}
到这里为止看起来还不错。现在,当我在片段中使用 ACustomView 并使用 viewBinding 调用 startProcess() 函数时,会出现以下错误:
Unresolved reference: startProcess
这是我在片段中调用函数的代码:
binding.customView.startProcess()
谁能帮我解决这个问题?我不知道我做错了什么。任何帮助表示赞赏。谢谢!
生成的绑定 class 创建了 View
class 而不是 ACustomView
.
视图绑定库在处理您的自定义视图时出现问题。
您可以使用 findViewById(...)
获取视图。
我相信视图绑定确实支持自定义视图,所以如果我能找到让它工作的方法,我会在这里更新。
终于,我可以让它工作了。正如@ShlomiKatriel 所解释的,我遇到这个问题是因为生成的绑定 class 创建了一个 View
class 而不是 ACustomView
.
我能够通过首先使用 findViewById()
、运行 应用程序然后将 findViewById()
替换为生成的绑定 class 来解决这个问题。出于某种原因,在使用 findViewById()
之后,它会生成正确的绑定 class。 ♂️