2012-09-23 65 views
5

¿Cómo se puede hacer un método con algunas versiones para cada nivel de API diferente? Creo que es algo así, pero no estoy seguroDiferentes métodos de Java para diferentes niveles de API

@apilevel("11") 
private void getR() 
{ 
... 
} 

@apilevel("4") 
private void getR() 
{ 
... 
} 

¿Cuál es la forma correcta de hacerlo? Gracias de antemano

Respuesta

7

aquí se quiere encuentra muy buen texto sobre este tema:

http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html

que básicamente debe usar un código como a continuación:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    Log.i(LOG_TAG, "At least ICS version"); 
} 
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    Log.i(LOG_TAG, "At least HoneyComb version"); 
} 
else { 
    Log.i(LOG_TAG, "legacy"); 
} 

valores const como ICE_CREAM_SANDWICH se ponen de forma estática en clases Java, por lo que el tiempo que están disponibles durante la compilación, estarán disponibles también en la anterior SDK de Android-s en teléfonos de usuarios. Lo que no quiere hacer es llamar a métodos que no están disponibles en sdk-s anteriores, esto terminará con excepciones de VFY.

pero esto puede ser tedioso de escribir código como el que, por eso todo lo posible para crear la aplicación separada para cada versión androide y acceder a ella pensó interfaz base: android.os

interface ImplBase { 
void myFunc(); 
}; 

class ICSImp implements ImplBase { 
public void myFunc(){} 
} 

class HoneyCombImp implements ImplBase { 
public void myFunc(){} 
} 

class LegaceImp implements ImplBase { 
public void myFunc(){} 
} 
Cuestiones relacionadas