前言
当在 Github 上下载导入项目时, 编译通过但代码爆红,如下,很明显是 Lambda 表达式 出现了问题
这个错误是因为你在使用 Lambda 表达式或方法引用时,没有在build.gradle文件中正确配置 Java版本和 minSdkVersion。对于 Lambda 表达式和方法引用,需要在 gradle中设置Java 8兼容性。
一、Lambda 表达式 是什么?
Lambda 表达式本质是一种匿名方法,它既没有方法名,也没有访问修饰符和返回值类型,用它来写代码更简洁,更易懂。使得开发者可以更方便地编写函数式接口。在Android中,Lambda表达式可以帮助我们更简洁地编写监听器、回调函数等,提高代码可读性和开发效率。以下是简单的阐述下Lambda表达式在Android中的使用方法:
1.使用Lambda表达式替代接口实现类
传统的接口实现类可能会让代码变得冗长,而Lambda表达式可以帮助我们更简洁地实现监听器和回调函数。例如,在Android中设置Button的点击事件时,传统的写法如下:
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 点击事件处理逻辑
}
});
使用Lambda表达式可以将代码简化为以下形式:
Button button = findViewById(R.id.button);
button.setOnClickListener((View v) -> {
// 点击事件处理逻辑
});
2 使用Lambda表达式遍历集合
在遍历集合时,传统的写法可能会让代码变得冗长。使用Lambda表达式可以帮助我们更简洁地遍历集合。例如,在Android中遍历List时,传统的写法如下:
List<String> list = new ArrayList<>();
for (String item : list) {
// item处理逻辑
}
使用Lambda表达式可以将代码简化为以下形式:
List<String> list = new ArrayList<>();
list.forEach(item -> {
// item处理逻辑
});
二、解决
1.在 App 下的 build.gradle文件中添加以下配置:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion 26 // 设置你的minSdkVersion
// ...
}
// ...
}
2.如果你使用的是Kotlin,需要在build.gradle文件中添加以下配置:
androidExtensions {
experimental = true
}
3.如果你使用的是Android Studio 3.0或更高版本,可以使用以下方法:
- 打开build.gradle文件,在右上角选择"Open for Editing in Android Studio"。
- 在打开的文件中,点击"File"菜单,选择"Project Structure"。
- 在左侧菜单中选择"app",然后选择"Properties"选项卡。
- 在该页面中,选择"Use Latest Platform"选项。
总结
这些方法中,第一种方法是最常用的,并且适用于大多数情况。注意,Lambda表达式只能在Java 8及以上版本中使用,如果你的项目使用的是更低的Java版本,需要先升级Java版本。。