缺少DialogPreference的构造函数

我正在把一个项目转换成Kotlin。 当我转换对话框首选项,应用程序崩溃与“没有这样的方法”,显然构造函数丢失。 这是错误信息:

05-26 20:13:32.799 6019 6019 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] 05-26 20:13:32.799 6019 6019 E AndroidRuntime: at java.lang.Class.getConstructor0(Class.java:2204) 05-26 20:13:32.799 6019 6019 E AndroidRuntime: at java.lang.Class.getConstructor(Class.java:1683) 05-26 20:13:32.799 6019 6019 E AndroidRuntime: at android.preference.GenericInflater.createItem(GenericInflater.java:378) 

该类有2个参数构造函数的错误消息抱怨:

 class FilterPreferenceFragment(context: Context, attrs: AttributeSet?) : BaseDialogPreference(context, attrs) { /* */ } 

而基类:

 abstract class BaseDialogPreference(context: Context, attrs: AttributeSet?) : DialogPreference(context, attrs) { /* */ } 

有什么建议么?

编辑:

如果有帮助,这里是由Kotlin编译器生成的字节码:

  // access flags 0x1 public <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0 @Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 1 L0 ALOAD 1 LDC "context" INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V L1 LINENUMBER 12 L1 ALOAD 0 ALOAD 1 ALOAD 2 L2 LINENUMBER 13 L2 INVOKESPECIAL android/preference/DialogPreference.<init> (Landroid/content/Context;Landroid/util/AttributeSet;)V RETURN L3 LOCALVARIABLE this Lcom/example/exampleapp/app/preference/BaseDialogPreference; L0 L3 0 LOCALVARIABLE context Landroid/content/Context; L0 L3 1 LOCALVARIABLE attrs Landroid/util/AttributeSet; L0 L3 2 MAXSTACK = 3 MAXLOCALS = 3 @Lkotlin/Metadata;(mv={1, 1, 6}, bv={1, 0, 1}, k=1, d1={"\u0000$\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0008&\u0018\u00002\u00020\u0001B\u0017\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0008\u0010\u0004\u001a\u0004\u0018\u00010\u0005\u00a2\u0006\u0002\u0010\u0006J\u0010\u0010\u0007\u001a\u00020\u00082\u0006\u0010\u0009\u001a\u00020\nH\u0014\u00a8\u0006\u000b"}, d2={"Lcom/example/exampleapp/app/preference/BaseDialogPreference;", "Landroid/preference/DialogPreference;", "context", "Landroid/content/Context;", "attrs", "Landroid/util/AttributeSet;", "(Landroid/content/Context;Landroid/util/AttributeSet;)V", "onBindView", "", "view", "Landroid/view/View;", "production sources for module ExampleApp"}) // compiled from: BaseDialogPreference.kt 

原来我正在看错课。 错误来自这个其他的偏好:

 class BaseCheckBoxPreference(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : CheckBoxPreference(context, attrs, defStyleAttr) { /* */ } 

为了解决崩溃,我不得不从构造函数中删除第三个参数:

 class BaseCheckBoxPreference(context: Context, attrs: AttributeSet? = null) : CheckBoxPreference(context, attrs) { /* */ } 

或者,我们可以定义一个只有2个参数的次级构造函数,但是对于我的用例,我只需要2个参数。 次要的构造函数是

 class BaseCheckBoxPreference(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : CheckBoxPreference(context, attrs, defStyleAttr) { constructor(context: Context, attrs: AttributeSet? = null) : this(context, attrs, 0) /* */ }