Java 重写方法中的变量名不正确
当我让androidstudio生成override方法时,它将生成具有奇怪参数名的方法 例如,根据文档,onCheckedChanged应该如下所示:Java 重写方法中的变量名不正确,java,android,kotlin,overriding,Java,Android,Kotlin,Overriding,当我让androidstudio生成override方法时,它将生成具有奇怪参数名的方法 例如,根据文档,onCheckedChanged应该如下所示: public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){} 但是我有 public void onCheckedChanged(CompoundButton compoundButton, boolean b){} 或者我得到的DatePicker
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}
但是我有
public void onCheckedChanged(CompoundButton compoundButton, boolean b){}
或者我得到的DatePickerDialog中的onDateSet:
onDateSet(DatePicker datePicker, int i, int i1, int i2)
而不是
onDateSet(DatePicker view, int year, int month, int dayOfMonth)
我在一个项目中安装了安卓SDK,并安装了安卓27的源代码
有什么想法吗
谢谢它与您的
build.gradle
文件中定义的compileSdkVersion
相关。您应该为用作编译SDK版本的API安装Android SDK源代码。因此,请尝试在SDK管理器中安装等于compileSdkVersion
的源代码版本
我已经在build.gradle
文件中设置了compileSdkVersion 28
。以下是安装sources版本28之前和之后的结果(注意:在此之后应重新启动AndroidStudio):
之前:
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) {
}
}
之后:
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库(如
RecyclerView
类)的问题来自它们的aar
工件。如果使用版本27.1.1库,则问题将消失。无论您使用的是版本28的哪个发行版(例如28.0.0、28.0.0-alpha1、28.0.0-alpha3、28.0.0-rc1、28.0.0-rc2等),在所有版本28发行版中,抽象方法的参数名称都是模糊的
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);
...
}
公共抽象静态类适配器{
公共适配器(){
}
@非空
公共抽象VH onCreateViewHolder(@NonNull ViewGroup var1,int var2);
BindViewHolder上的公共摘要无效(@NonNull VH var1,int var2);
...
}
因此,在下一个发行版中确定之前,似乎没有办法解决这个问题。正如氨基造影术所说,这是因为您尚未安装您正在使用的
编译器DK的源代码。
要安装源,请执行以下步骤:
检查项目的compileSdk版本。(从应用程序级别build.gradle
file)。如下图所示,我的compileSdk版本是26。所以,我必须为平台26安装源代码
二,。
转到sdk管理器,在sdk平台选项卡中检查显示软件包详细信息
选项(如果未选中)。然后安装compileSdk版本的源代码(在我的例子中是26)。就这样。现在,您将获得适当的参数名称
its变量名,这有关系吗?!@Elsunhoty的可能复制品确实很重要。如果仔细看一下示例onDateSet
,您会发现3个整数没有任何意义,而有意义的名称会准确地告诉您每个参数代表什么。我很好奇能找到解决这个问题的办法,因为我已经有一段时间被它困扰了!我知道有些方法有很好的参数名,它们只是倾向于停止。是的,你是对的是的,上面的例子在我的例子中也适用,但是当我尝试创建RecyclerView的适配器并覆盖onCreateViewHolder时(p0:ViewGroup,p1:Int)方法仍然显示不正确的参数变量名。感谢更新:)希望Android开发团队注意到并修复这个问题,这是一个非常好的答案!谢谢你节省了我的时间。我试图理解为什么我的FirebaseMessagingService
在重写方法上有这么奇怪的名字。