AmI*_*ord 7 android backwards-compatibility verifyerror
我有一个应用程序,它使用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版本有条件地使用更新的功能?
Com*_*are 15
是否无法根据SDK版本有条件地使用更新的功能?
是的.
我猜你的代码看起来像这样:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
overridePendingTransition(...);
}
Run Code Online (Sandbox Code Playgroud)
如果我是对的,那就行不通了.VM将尝试查找overridePendingTransition()何时加载类,而不是何时if()执行该语句.
相反,你应该能够做到这一点:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...);
}
Run Code Online (Sandbox Code Playgroud)
其中实施overridePendingTransition()的SomeClassDedicatedToThisOperation只是调用overridePendingTransition()所提供的Activity.
只要SomeClassDedicatedToThisOperation不在其他任何地方使用它,它的类将不会加载,直到你在if()测试中,你不会得到VerifyError.
| 归档时间: |
|
| 查看次数: |
1181 次 |
| 最近记录: |