overridePendingTransition

overridePendingTransition

我有一个应用程序,它使用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

08-26 07:12