android - VerifyError,还是在保持兼容性的情况下使用 overridePendingTransition?

标签 android backwards-compatibility verifyerror

我有一个应用程序,它使用 overridePendingTransition 在从一个 Activity 转换到另一个 Activity 时执行一些自定义动画。这在 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版本有条件地使用更新的功能?

最佳答案

Is it not possible to use newer functionality conditionally based on the SDK version?

是的,是的。

我猜你的代码看起来像这样:

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, ...);
}

SomeClassDedicatedToThisOperationoverridePendingTransition() 的实现只是在提供的 Activity 上调用 overridePendingTransition()

只要 SomeClassDedicatedToThisOperation 没有在其他任何地方使用,它的类将不会被加载,直到您进入 if() 测试,并且您不会得到 验证错误

关于android - VerifyError,还是在保持兼容性的情况下使用 overridePendingTransition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574687/

相关文章:

backwards-compatibility - JDK6 库 - 与 JDK7 的兼容性

iphone - 在 AIR/AS3 中使用特定于移动设备的类测试代码时,如何避免出现VerifyError?

java - 使用 Unsafe.defineClass 在运行时定义多个类

android - 如何保留 fragment ListView 内容?

android - Android 模拟器 4.2.2 或更高版本上的 Google Play 服务。 "Google Maps API demos won' t 运行,除非你更新谷歌播放服务”

java - 试图在字符串中找到带有分隔符的单词

android ScrollView 缩略图大小

client-server - 向后兼容的服务接口(interface),无需更新 azure 服务结构中的旧客户端

java - 致命异常 : java. lang.VerifyError:来自导入的 jar 文件

java - 如何使用 japicmp 比较当前和以前构建中生成的 Artifact