Android/Kotlin 未捕获“this@ActivityName”错误

Mac*_*ieg 37 android warnings android-edittext kotlin

我正在修复我朋友的代码并且感到困惑。
我的朋友想要获取输入的文本(在 EditText 中)。看起来很容易,对吧?嗯,是的,但他得到的不是用户输入,而是这个警告/错误:
在此输入图像描述

老实说,我不知道如何解决它。他正在使用 Kotlin (Android 10) 进行编码。
包含 EditText 的活动: 在此输入图像描述

和 XML:
在此输入图像描述

这是调试时的样子:
在此输入图像描述

运行“文件 - >无效现金/重新启动”选项后,应用程序开始正常工作,我只是不明白此警告来自何处以及如何修复它,因为错误保持不变(即使应用程序工作)。你知道如何解决它吗?

一切顺利!

nas*_*ihu 50

仅供参考,像 kotlin 中的 setOnClickListener 这样的 lambda 表达式是不可调试的,请参阅此处

如果你想调试 setOnClickListener 中的变量,你应该使用普通的变量,例如 setOnClickListener(object: View.OnClickListener {..})

  • 科特林很棒。 (23认同)
  • 另一种方法 - 只是将代码从 lambda 移动到单独的方法中。并且“this”将再次被捕获。 (3认同)
  • 这确实有效,但问题本身就令人恼火。您知道 IntelliJ/AndroidStudio 是否存在针对此问题的未解决错误吗? (3认同)

Red*_*d M 12

我知道问题是关于评估表达式,但是有一种方法可以从调试器控制台读取变量,即使您位于匿名回调中。我发现有时它很有帮助。步骤如下:

  • 首先在匿名回调中进入调试器模式,
  • 在调试器控制台中,查看右侧的“Frames”
  • 框架主要的,您将看到函数执行堆栈,列表中第一个顶部的堆栈是最新的:在此输入图像描述
  • 单击最新函数下方的行,直到找到活动AddInformationActivity的实例。您将在右侧窗口的Variables下看到活动实例。不要选择被限制的函数,因为这些函数来自内部库。
  • 当您看到 AddInformationActivity 实例时,您可以展开它并查看它的变量。

希望有帮助!

  • 这应该是可以接受的答案。请大家点赞,将答案推到帖子顶部。很有帮助。谢谢你!! (2认同)

vig*_*esh 5

有时自动生成的绑定文件会出现问题,如果是这样,则使缓存无效并重新启动ide后即可解决。有时会显示警告/错误,但项目并没有错误地遵守。所以无需担心这一点。下次将代码作为代码而不是屏幕截图发布。

  • 我清除了无效的缓存并重新启动。不起作用 (3认同)