使用Codename One构建的我的应用程序具有Camera预览。我需要使用Native Interface实现(到目前为止的Android)来显示此预览。在某些(较旧的)Android设备上,我还需要拨打Camera.autofocus(AutofocusCallback)
进行锐利预览。Codename One中的Android本地代码,其中lambda不起作用
的Android工作室建议我用lambda表达式定义回调:
mCamera.autoFocus((b, camera) -> Log.d(TAG, "Camera may have focused"));
当我调试我的项目它wortks。
但是当我复制粘贴在代号为一个本地接口的实现这段代码,并发送Android编译,生成过程中失败,出现以下错误:
error: ')' expected
mCamera.autoFocus((b, camera) -> Log.d(TAG, "Camera may have focused"));
^
error: illegal start of expression
mCamera.autoFocus((b, camera) -> Log.d(TAG, "Camera may have focused"));
^
error: ';' expected
mCamera.autoFocus((b, camera) -> Log.d(TAG, "Camera may have focused"));
为了得到构建我必须转换拉姆达融入了更多的传统:
mCamera.autoFocus(new Camera.AutoFocusCallback() {
@Override
public void onAutoFocus(boolean b, Camera camera) {
Log.d(TAG, "Camera may have focused");
}
});
我不能用拉姆达的原生界面的实现,而它完美的作品在代号一个代码?
任何帮助表示赞赏,
是@Frank Lauterwald我的项目是一个Java 8项目。在我的表单中使用Lambda表达式来定义按钮操作。只有在本地接口实现中使用lambda时,构建才会失败。 – HelloWorld
目前尚未实施本地代码,因此我们不会破坏现有的Android本机代码。但是,最新的Android SDK引入了一种独立的方法来使用Java 8(这在我们引入Java 8支持后很好),因此我们添加了构建提示以尝试启用此支持,但未经测试且仅在本周五可以使用'android.java8 = true'构建提示来尝试它,并让我们知道它是否有效或者没有 –
谢谢@Shai一旦我测试了这个新的构建提示,我会尽快发布! – HelloWorld