Se puede saber, ¿es seguro para mí siempre elenco Context a Activity dentro de un View?

View {
    Activity activity = (Activity)this.getContext();
}

Hasta ahora, funciona bien todo el momento. Me preguntaba, ¿hay algún borde de los casos que el código anterior fallará?

4 Comentarios

  1. 2

    Mientras que no se puede pensar en tal caso, creo que no es una buena idea por dos razones:

    1. Por qué para que quieres hacer eso, cuando se haga de forma explícita la necesidad de la Actividad?
    2. Lo que si el día de mañana esto va a ser cambiado, y habrá otras contexto para View?
    • 1. Hay situaciones en el que la persona que llama no puede una Actividad como un parámetro. 2. Android es bastante bueno en mantener la compatibilidad con versiones anteriores (que yo no puede decir acerca de sus herramientas de desarrollo). En mi humilde opinión @lulumeya la respuesta es la respuesta correcta para ser aceptado.
    • ContextThemeWrapper sin duda añade un nuevo nivel de tontería para él. He oído que usted puede tener acceso a la Actividad usando getBaseContext() entonces.
  2. 57

    Yo sepa, no es siempre seguro porque, el contexto también pueden pasar de un sistema operativo para un Servicio, BroadcastReceiver, etc. Pero, casi de caso, que no es un problema. acabo de comprobar con este código

    if(context instanceof Activity)

    y siéntase libre de utilizar.

  3. 5

    Creo que puede utilizar el siguiente fragmento de código:

    /**
     * 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;
    }
  4. 3

    Técnicamente, las Vistas pueden ser creados con cualquier Contexto (a través de la LayoutInflater)

    Así que a menos que seas un super seguro de que sus Opiniones son sólo crea la instancia de Actividades, yo no recomendaría este. Esto no es un limpio idea.

Dejar respuesta

Please enter your comment!
Please enter your name here