运行以下内容(注意:目标> 3.0)
ActionBar actionBar = getActionBar();
Android上的版本< 3.0(SDK 11)产生NoSuchMethodError
。
有几种方法可以解决这个问题,包括反射和类延迟加载。但是,以下内容似乎适用于我测试的所有设备(2.3.6,3.0,3.1,4.0):
boolean hasActionBar = android.os.Build.VERSION.SDK_INT >= 11;
if (hasActionBar) {
ActionBar actionBar = getActionBar();
} else {
// create custom actionbar
}
请注意,SDK_INT
参数为static final
,这似乎是其有效的原因。
这是处理兼容性的有效方法吗?
答案 0 :(得分:2)
我相信,只要一切都设置正确。
来自Reto Meier的博客: http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
答案 1 :(得分:1)
由于JIT编译器,它看起来很有效。此代码在SDK< 2.1,它支持这一理论。无论如何,这可能不是避免反射的可靠方法。