在某些情况下,当从匿名类访问活动字段时,我在运行时得到NoSuchFieldError: java.lang.NoSuchFieldError:MyActivity.myField
编辑:我现在确定这是一个Android问题,因为所有内容都正确编译但在运行时无法正确解析。当更改为 MyActivity.this.myField 而不是简单的 myField 时,一切都很完美。
BTW,我重新检查过,我在其他任何地方都没有任何其他的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();
}
答案 0 :(得分:0)
似乎访问具有类'前缀的字段解决了它: MyActivity.this.myField
奇怪。我想这是Android在运行时的字段分辨率。