You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义AppCompatEditText报错:无匹配构造函数可调用

问题原因

AppCompatEditText仅提供三个构造函数重载:

  1. AppCompatEditText(Context)
  2. AppCompatEditText(Context, AttributeSet?)
  3. AppCompatEditText(Context, AttributeSet?, Int)

你的主构造函数试图调用父类不存在的四个参数构造方法,这就是报错的核心原因。

修正方案

调整主构造函数,仅调用父类已存在的构造,同时通过Kotlin默认参数简化次级构造:

class MyField(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = R.attr.editTextStyle
) : AppCompatEditText(context, attrs, defStyleAttr) {

    constructor(context: Context) : this(context, null)
    constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, R.attr.editTextStyle)

}

如果不需要额外的构造逻辑,甚至可以直接省略次级构造,利用Kotlin默认参数自动生成对应重载:

class MyField(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = R.attr.editTextStyle
) : AppCompatEditText(context, attrs, defStyleAttr)
关于defStyleRes的补充

若需处理defStyleRes参数,AppCompatEditText并未开放对应的构造入口,你可以在类内部通过obtainStyledAttributes方法读取属性时传入该参数,自行实现样式逻辑。

内容的提问来源于stack exchange,提问作者SmartASCII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:30:56