2010-08-26 41 views
7

我有一个应用程序,它使用overridePendingTransition在从一个活动转换到另一个时执行一些自定义动画。这是在Android 2.0中提供的,但我想让应用程序在Android 1.6上运行。我想如果我只是检查了android.os.Build.VERSION.SDK_INT> android.os.Build.VERSION_CODES.DONUT,如果不是,不要做overridePendingTransition。VerifyError,或使用overridePendingTransition同时保持兼容性?

不过,我得到一个的VerifyError,我以为是这个原因造成的: VFY:无法解析虚方法346:../../Login:overridePendingTransition(II)V

是没可能有条件地使用基于SDK版本的新功能?

回答

15

是否有可能有条件地使用基于SDK版本的更新功能?

是的。

我会猜,你的代码如下所示:

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { 
    overridePendingTransition(...); 
} 

如果我是正确的,那么这是行不通的。虚拟机将尝试在装入类时找到overridePendingTransition(),而不是执行if()语句。

相反,你应该能够做到这一点:

if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { 
    SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...); 
} 

其中overridePendingTransition()SomeClassDedicatedToThisOperation的实现只是呼吁提供ActivityoverridePendingTransition()

只要SomeClassDedicatedToThisOperation没有在其他地方使用,它的类将不会被加载,直到你在if()测试中,你将不会得到VerifyError

相关问题