studio intent developer desde context change boton activity abrir java android android-intent android-context

java - intent - Contexto de intención de Android confuso



intent activity (3)

Antes que nada, permítanme explicarles cuál es el contexto un poco mejor, y luego veamos cómo se puede usar y recibir. Esencialmente, el contexto es una referencia para vincular sus recursos a su programa. Cada objeto tiene su propio contexto, que contiene los recursos necesarios para configurar ese objeto. Es necesario para que se creen muchos objetos y para obtener información de identificación del programa, entre otros fines. Esto hace que sea invaluable establecer nuevas vistas y actividades, pero también se puede utilizar para otros fines. Ver también esta respuesta para más información.

El contexto para un artículo puede provenir de una variedad de lugares. A veces se almacena y tiene que ser recuperado, a veces se hereda. Básicamente, esta es una programación orientada a objetos.

Solo para darle algunos ejemplos:

Activity hereda el contexto. Por lo tanto, si está en una actividad, solo necesita pasar a sí mismo para usar el contexto. También contiene un puntero a getBaseContext() . En ocasiones puede necesitar referenciarlo, si necesita todo el contexto de la aplicación, pero lo más probable es que no lo haga por un tiempo.

View no hereda el contexto. Sin embargo, tiene un método getContext() . Si necesita obtener un contexto de una vista, esta es la forma de obtenerlo. Este contexto no estará completo, pero solo tendrá el contexto para el contenido de la Vista.

Fragments tampoco heredan el contexto. Contienen un método getActivity() , que si el Fragmento está activo, devolverá la actividad, que es el contexto para el Fragmento.

BroadcastReceivers tampoco heredan el contexto. De hecho, no contienen ningún tipo de contexto, sino que simplemente reciben el contexto actual cuando se recibe un evento (como onReceive (contexto contextual, intento de intento) )

¿Puede alguien explicarme esto por favor?

Intent intent = new Intent(Context, AlarmReceiver.class);

Nunca entendí y creo seriamente que nunca lo haré si alguien no intenta explicarme esto en profundidad. Todo este contexto es tan confuso para mí. A veces funciona así:

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);

A veces no funciona así, pero solo acepta:

Intent intent = new Intent(context, AlarmReceiver.class);

Algunas veces es:

Intent intent = new Intent(this, AlarmReceiver.class);

etc. etc. y muchos otros.

Entiendo los conceptos básicos del contexto, pero ¿cuántos hay? ¿Y por qué eclipse me lanza un error una vez y otra vez está bien? ¿Por qué tenemos que declarar el contexto a veces? :

Context context;

No puedo encontrar el contexto adecuado para todas las situaciones ¿cómo sé cuál es el correcto en cada situación?


Capacidades de contexto

Las acciones comunes que puede realizar de forma segura con un objeto de Contexto dado dependen de dónde proviene originalmente. A continuación se muestra una tabla de los lugares comunes donde una aplicación recibirá un Contexto, y en cada caso para qué es útil:

  1. Una aplicación PUEDE iniciar una Actividad desde aquí, pero requiere que se cree una nueva tarea. Esto puede adaptarse a casos de uso específicos, pero puede crear comportamientos de backstack no estándar en su aplicación y generalmente no se recomienda ni se considera una buena práctica.
  2. Esto es legal, pero la inflación se realizará con el tema predeterminado para el sistema en el que se está ejecutando, no según lo definido en su aplicación.
  3. Permitido si el receptor es nulo, que se utiliza para obtener el valor actual de una emisión fija, en Android 4.2 y versiones posteriores.

Artículo original here .


Lo que entiendo por medio del contexto es el medio ambiente. En términos simples, el contexto es el entorno de cualquier cosa. Por lo tanto, cuando usa cualquier forma de contexto, debe decidir cuál debe ser el entorno de las cosas para las que está utilizando el contexto.

Por ejemplo, si desea que algunos datos o campos permanezcan en la aplicación, debe definirlos en la clase de aplicación.

Ahora cuando obtiene el contexto de la aplicación en cualquiera de sus componentes de la aplicación, este campo que ha declarado en la clase de la aplicación estará en su contexto. Por lo tanto, puede acceder a él.

Lo mismo es cierto para todo tipo de contexto.

Si alguna vez intentas usar alertDialog en el componente de servicio, usa el contexto "this". Prueba este y apuesto a que seguramente obtendrás excepciones ya que "this" representa el entorno de servicio cuando se usa en él. Y como es un componente de fondo, podemos hacerlo " t add window en that.Hence le dirá la excepción del token malo. Lo que significa token generado para la vista circundante no es apropiado para alertDialog para mostrar.

Espero que esto te dé una idea breve de lo que quieres.