使用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