我有一些代码可以成功编译使用ViewTreeObserver#removeOnGlobalLayoutListener(...)
,当它运行时,此方法抛出NoSuchMethodError
.为什么?
And*_*yld 148
有两种方法ViewTreeObserver
几乎相同的名称.
removeOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
(上然后全球)是在API 16中添加它替代的方法
removeGlobalOnLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim)
(全球然后开启)自API 1以来就存在,但现在已被弃用.
这两种方法都可以出现在编译时(如果您正在构建Jellybean或更高版本),但较新的方法将在pre-Jellybean设备上失败.
此代码阻止了错误:
try {
thing.removeOnGlobalLayoutListener(victim);
} catch (NoSuchMethodError x) {
thing.removeGlobalOnLayoutListener(victim);
}
Run Code Online (Sandbox Code Playgroud)
这段代码也是如此:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
thing.removeGlobalOnLayoutListener(victim);
} else {
thing.removeOnGlobalLayoutListener(victim);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16756 次 |
最近记录: |