被覆盖方法中的变量名称不正确

2022-09-01 23:18:20

当我让Android Studio生成覆盖方法时,它将生成具有奇怪参数名称的方法。

例如,根据CheckedChanged上的文档,应该看起来像这样:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}

但我得到了

public void onCheckedChanged(CompoundButton compoundButton, boolean b){}

或 onDateSet in DatePickerDialog i got:

onDateSet(DatePicker datePicker, int i, int i1, int i2)

而不是

onDateSet(DatePicker view, int year, int month, int dayOfMonth)

我在一个项目中设置了Android SDK,并安装了Android 27的Sources。

有什么想法吗?

谢谢


答案 1

它与文件中定义的相关。您应该为用作 的 API 进行安装。因此,请尝试在 SDK 管理器中安装等于的源版本。compileSdkVersionbuild.gradleSources for Android SDKcompileSdkVersioncompileSdkVersion

我已经设置了 in 文件。以下是安装源代码版本 28 之前和之后的结果(注意:您应该在此之后重新启动 AndroidStudio):compileSdkVersion 28build.gradle

以前:

val textWatcher = object: TextWatcher {

    override fun afterTextChanged(p0: Editable?) {
    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }
}

后:

val textWatcher = object: TextWatcher {

    override fun afterTextChanged(s: Editable?) {
    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
    }

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    }
}

更新: 10/23/2018

有关 AppCompat-v28 库(如类)的问题来自它们的工件。如果使用版本 27.1.1 库,则问题将消失。您使用的版本 28 的发行版无关紧要(例如 28.0.0、28.0.0-alpha1、28.0.0-alpha3、28.0.0-rc1、28.0.0-rc2 等)。在所有版本 28 发行版中,抽象方法的参数名称都经过模糊处理。RecyclerViewaar

public abstract static class Adapter<VH extends RecyclerView.ViewHolder> {

    public Adapter() {
    }

    @NonNull
    public abstract VH onCreateViewHolder(@NonNull ViewGroup var1, int var2);

    public abstract void onBindViewHolder(@NonNull VH var1, int var2);

    ...
}

因此,似乎没有办法解决,直到它将在下一个发行版中修复。


答案 2

正如 aminography 所说,这是因为您尚未安装正在使用的源。要安装源,请按照以下步骤操作:compileSdk

  1. 检查项目的编译Sdk版本。(从应用级文件)。正如你在下面的图片中看到的,我的编译Sdk版本是26。因此,我必须安装平台26的源代码。build.gradle

enter image description here

2. 转到 sdk 管理器,如果未选中,请在 SDK 平台选项卡中选中选项。然后为您的编译Sdk版本安装源代码(在我的情况下是26)。就是这样。现在,您将获得适当的参数名称。show package details

enter image description here


推荐