我对此代码有疑问:
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
//noinspection deprecation
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
getDefaultIntent();
}
});
我想将此代码转换为使用lambda表达式,如下所示:
view.getViewTreeObserver().addOnGlobalLayoutListener(()->{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
//noinspection deprecation
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
getDefaultIntent();
});
但它不起作用,因为现在this
没有引用内部类。
答案 0 :(得分:0)
尝试通知参数,"完整地址"这个的)。
removeGlobalOnLayoutListener(this);
喜欢这些:
removeGlobalOnLayoutListener(MainActivity.this);
当然,您需要告知您的真实姓名。
答案 1 :(得分:0)
lambda主体中
this
表示的值与值相同 在周围环境中由this
表示。
因此,如果需要使用this
来引用匿名对象,则需要使用显式匿名对象,而不是lambda。解决方法是像原始代码一样编写它。
Lambda是一种在很多情况下都很有用的工具,但不需要在所有情况下使用。