android– 如何从里面引用lambda?

android– 如何从里面引用lambda?,第1张

概述我试图在onCreate方法中获取视图的高度,但我找不到任何方法来删除OnGlobalLayoutListener.在Java(工作):containerLayout.getViewTreeObserver.addOnGlobalLayoutListener(newOnGlobalLayoutListener(){@OverridepublicvoidonGlobalLayout(){conta

我试图在onCreate方法中获取视图的高度,但我找不到任何方法来删除OnGlobalLayoutListener.

在Java(工作):

containerLayout.getVIEwTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {      @OverrIDe      public voID onGlobalLayout() {          containerLayout.getVIEwTreeObserver().removeGlobalOnLayoutListener(this);         int wIDth  = layout.getMeasureDWIDth();        int height = layout.getMeasuredHeight();     }  });

在Kotlin(不接受“这个”):

   containerLayout.vIEwTreeObserver.addOnGlobalLayoutListener {            containerLayout.vIEwTreeObserver.removeOnGlobalLayoutListener(this)            Toast.makeText(applicationContext, "size is "+ containerLayout.height,Toast.LENGTH_LONG).show()        }

这个问题有没有参考或例子?谢谢.

解决方法:

不支持从内部引用lambda.

作为一种解决方法,您可以使用匿名对象而不是lambda SAM转换为Java功能接口OnGlobalLayoutListener:

containerLayout.vIEwTreeObserver.addOnGlobalLayoutListener(object: OnGlobalLayoutListener {    overrIDe fun onGlobalLayout() {        // your code here. `this` should work    }})
总结

以上是内存溢出为你收集整理的android – 如何从里面引用lambda?全部内容,希望文章能够帮你解决android – 如何从里面引用lambda?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1097959.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存