問題描述:
在程序中使用了下面的語句實現綁定Java和Layout
View view = View.inflate(getContext(), R.layout.video_play, this);
ButterKnife.bind(this,view);
但是運行時總出錯,報錯如下:
Caused by: java.lang.BootstrapMethodError: Exception from call site #1 bootstrap method
at butterknife.internal.DebouncingOnClickListener.<clinit>(DebouncingOnClickListener.java:12)
按照提示點開了提示
package butterknife.internal;
import android.view.View;
/**
* A {@linkplain View.OnClickListener click listener} that debounces multiple clicks posted in the
* same frame. A click on one button disables all buttons for that frame.
*/
public abstract class DebouncingOnClickListener implements View.OnClickListener {
static boolean enabled = true;
private static final Runnable ENABLE_AGAIN = () -> enabled = true;
@Override public final void onClick(View v) {
if (enabled) {
enabled = false;
v.post(ENABLE_AGAIN);
doClick(v);
}
}
public abstract void doClick(View v);
}
其中 private static final Runnable ENABLE_AGAIN = () -> enabled = true 使用了Java8的新特性。
解決方法:
build.gradle中添加以下代碼:
android {
······
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
重新編譯問題就解決了!
個人網站:分享客(https://sharerdiary.com/)
這個網站經常分享一些免費視頻、免費音樂、實用工具和各種福利,感興趣的朋友可以看看!