2010-08-26 13 views
7

Tengo una aplicación que usa anular TransferenciaPend para hacer algunas animaciones personalizadas al pasar de una actividad a la otra. Esto estuvo disponible en Android 2.0, pero quiero que la aplicación funcione en Android 1.6. Pensé que si solo comprobaba que android.os.Build.VERSION.SDK_INT> android.os.Build.VERSION_CODES.DONUT, y si no, no hagas el overridePendingTransition.VerifyError, o utilizando overridePendingTransition manteniendo la compatibilidad?

Sin embargo, aparece un VerifyError, que supongo que es causada por la siguiente: VFY: No se puede resolver método virtual 346: ../../Login: overridePendingTransition V

(II) ¿No es posible utilizar la funcionalidad más nueva de forma condicional basada en la versión del SDK?

Respuesta

15

¿No es posible utilizar la funcionalidad más reciente de forma condicional según la versión del SDK?

Sí, lo es.

voy a adivinar que su código es el siguiente:

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

Si estoy en lo cierto, entonces eso no funcionará. La máquina virtual intentará encontrar overridePendingTransition() cuando se carga la clase, no cuando se ejecuta la instrucción if().

su lugar, debe ser capaz de hacer esto:

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

cuando la ejecución de overridePendingTransition() en SomeClassDedicatedToThisOperation sólo llama overridePendingTransition()Activity en el que se suministra.

Mientras SomeClassDedicatedToThisOperation no se utiliza en ningún otro lugar, su clase no se cargará hasta que esté dentro de su prueba de if(), y usted no conseguirá el VerifyError.

Cuestiones relacionadas