android studio lambda使用

最新方法直接看底部,最新版2.4版本最简单方式

as在2.1版本原生支持java8,只需要在build.gradle一些简单的配置:

1
2
3
4
5
6
7
8
9
10
11
12
android {
defaultConfig {
//省略其他配置
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

同时注意将buildToolsVersion改为24.+,例如我使用的是 24.0.0 rc4

之后就可以在源码中使用java8中lambda,和其它一些方法。具体在:https://developer.android.com/preview/j8-jack.html
查看所有支持的java8特性。

因为是新特性,其对as2.0推出的instant run功能有所冲突不能同时使用。并且在java代码中引用的中文字符串会有乱码问题(在2.2正式版上此问题依旧存在)。

我的代码:

1
2
findViewById(R.id.click).setOnClickListener(
view -> Toast.makeText(MainActivity.this, "你好!!", Toast.LENGTH_SHORT).show());

希望google能尽快修复这些问题。
这个问题可以通过使用资源文件的方式解决:

1
2
findViewById(R.id.click).setOnClickListener(
view -> Toast.makeText(MainActivity.this, R.string.hello_world, Toast.LENGTH_SHORT).show());

Tips:使用Android Studio 2.3测试后,中文乱码问题已解决。(2017年3月8日)

Tips:Android Studio更新2.4 alpha之后,可以不开启jack而只需要在build.gradle使用:

1
2
3
4
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

即可正常使用java8的部分功能(2017年5月13日)