2012-02-14 12 views

Respuesta

2

Aunque no puedo pensar en tal caso, yo creo que no es tan buena idea por dos razones:

  1. Por qué querrías hacer eso, ¿cuándo necesita explícitamente Actividad?
  2. ¿Qué pasa si mañana esto cambiará, y habrá otro contexto para View?
+2

** 1 ** Hay situaciones [] (http://stackoverflow.com/a/5376772) en el que la persona que llama no puede una Actividad como un parámetro ** 2. ** Android es bastante bueno para mantener la compatibilidad con versiones anteriores (lo que no puedo decir sobre sus herramientas de desarrollo). La respuesta de IMHO @ lulumeya es la respuesta correcta para ser aceptado. – ateiob

+0

'ContextThemeWrapper' definitivamente le agrega un nuevo nivel de tonterías. He escuchado que puedes acceder a la Actividad usando 'getBaseContext()' luego. – EpicPandaForce

53

Como sé, no siempre es seguro porque, el contexto también se puede pasar de un os a un Servicio, BroadcastReceiver, etc. Pero, casi de un caso, eso no es un problema. simplemente verifique con este código

if(context instanceof Activity) 

y siéntase libre de usar.

3

Técnicamente, Vistas se pueden crear con cualquier contexto (a través de la LayoutInflater)

Así que a menos que esté muy seguro de que sus opiniones sólo se crean instancias de Actividades, yo no recomendaría esto. Hacer esto no es una idea clara.

2

Creo que se puede utilizar siguiente fragmento:.

/** 
* Get activity instance from desired context. 
*/ 
public static Activity getActivity(Context context) { 
    if (context == null) return null; 
    if (context instanceof Activity) return (Activity) context; 
    if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext()); 
    return null; 
} 
Cuestiones relacionadas