我有一个应用程序,它使用overridePendingTransition在从一个活动转换到另一个活动时执行一些自定义动画。这在Android 2.0中可用,但我想让应用程序在Android 1.6上运行。我想如果我刚检查了android.os.Build.VERSION.SDK_INT> android.os.Build.VERSION_CODES.DONUT,如果没有,请不要执行overridePendingTransition。
但是,我得到一个VerifyError,我认为是由这引起的: VFY:无法解析虚方法346:../../ Login:overridePendingTransition(II)V
是否无法根据SDK版本有条件地使用更新的功能?
答案 0 :(得分:15)
是否无法根据SDK版本有条件地使用更新的功能?
是的,是的。
我猜你的代码看起来像这样:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
overridePendingTransition(...);
}
如果我是对的,那就行不通了。 VM将在加载类时尝试查找overridePendingTransition()
,而不是在执行if()
语句时查找。{/ p>
相反,你应该能够做到这一点:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...);
}
overridePendingTransition()
中SomeClassDedicatedToThisOperation
的实施仅在所提供的overridePendingTransition()
上调用Activity
。
只要SomeClassDedicatedToThisOperation
未在其他任何地方使用,只有在if()
测试中,才会加载其类,并且您将无法获得VerifyError
。