我有一个应用程序,它使用overridependingtransition在从一个活动转换到另一个活动时执行一些自定义动画。这是在android 2.0中提供的,但我想让应用程序在android 1.6上运行。我想如果我刚刚检查了android.os.build.version.sdk_int>android.os.build.version_codes.donut,如果没有,就不要执行重写转换。
但是,我得到了一个verifyerror,我认为这是由以下原因造成的:
vfy:无法解析虚拟方法346:../../login:OverridePendingTransition(II)v
是否不能根据sdk版本有条件地使用更新的功能?
最佳答案
是否不能根据sdk版本有条件地使用更新的功能?
是的,是的。
我猜你的代码是这样的:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
overridePendingTransition(...);
}
如果我是对的,那就不行了。在加载类时,vm将尝试查找
overridePendingTransition()
,而不是在执行if()
语句时。相反,您应该能够做到:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...);
}
其中
overridePendingTransition()
中SomeClassDedicatedToThisOperation
的实现只调用所提供的overridePendingTransition()
上的Activity
。只要
SomeClassDedicatedToThisOperation
不在其他地方使用,它的类就不会被加载,直到您进入if()
测试,并且您将不会得到VerifyError
。