在某些情况下,当从匿名类访问活动字段时,我在运行时收到 NoSuchFieldError:java.lang.NoSuchFieldError: MyActivity.myField
编辑:我现在确定这是一个 Android 问题,因为一切都正确编译但在运行时解析不正确。当更改为MyActivity.this.myField而不是普通的myField时,一切正常。
顺便说一句,我重新检查并在其他任何地方都没有任何其他 myField,此外,在 Eclipse 中打开声明时,它会转到预期的字段(myField)。
唯一的问题是我无法在示例项目中重现这一点。我只能声明这是我项目中的一个特定问题,但我不愿意这样做,我不能发布这个项目。
我会保持这个开放,以防有人偶然发现类似的东西。
这是我可以发布的代码,它使我的项目崩溃,但不是示例代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this, myField.getName(), Toast.LENGTH_SHORT).show();
}
}.run();
}