Sai*_*tan 14 java android overriding kotlin
当我让Android Studio生成覆盖方法时,它将生成具有奇怪参数名称的方法.
例如,根据文档onCheckedChanged应如下所示:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}
Run Code Online (Sandbox Code Playgroud)
但我得到了
public void onCheckedChanged(CompoundButton compoundButton, boolean b){}
Run Code Online (Sandbox Code Playgroud)
或得到DatePickerDialog中的onDateSet:
onDateSet(DatePicker datePicker, int i, int i1, int i2)
Run Code Online (Sandbox Code Playgroud)
代替
onDateSet(DatePicker view, int year, int month, int dayOfMonth)
Run Code Online (Sandbox Code Playgroud)
我在一个项目中安装了Android SDK,并安装了Sources for Android 27.
有任何想法吗?
谢谢
ami*_*phy 15
它与compileSdkVersion您的build.gradle文件中定义的内容相关.您应该Sources for Android SDK为您使用的API 安装compileSdkVersion.因此,请尝试compileSdkVersion在SDK Manager中安装相同的源代码版本.
我已经设置了compileSdkVersion 28in build.gradle文件.以下是安装源版本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) {
}
}
Run Code Online (Sandbox Code Playgroud)
后:
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) {
}
}
Run Code Online (Sandbox Code Playgroud)
有关该问题的程序兼容性-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);
...
}
Run Code Online (Sandbox Code Playgroud)
所以似乎没有办法解决,直到它将在下一个发行版中修复.
正如氨基图所说,这是因为您尚未安装compileSdk正在使用的源。要安装源代码,请按照以下步骤操作:
检查您项目的 compileSdk 版本。(来自应用程序级别build.gradle文件)。如下图所示,我的 compileSdk 版本是 26。所以,我必须安装平台 26 的源代码。
2. 转到 sdk 管理器,show package details如果未选中,请在 SDK 平台选项卡中检查选项。然后为您的 compileSdk 版本安装源代码(在我的例子中是 26)。就是这样。现在,您将获得适当的参数名称。
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |