android - smart - como eliminar virus de un televisor lg
¿Cómo obtener el contexto actual? (5)
Además de las respuestas anteriores correctas, puede pensar en refactorizar su código si ha llegado al punto en el que necesita acceder a su contexto desde una subactividad. Cuando crea una actividad secundaria (es decir, startActivityForResult), realmente está esperando un resultado, no una acción en la actividad de la persona que llama. Luego, cuando la actividad secundaria haya finalizado (y tenga el resultado de sus cálculos), puede acceder a su contexto de una manera adecuada. Simplemente no parece bien que la subactividad sea consciente de su creador, por no mencionar que interactúa con él.
Quiero usarlo en mi adaptador de matriz. Cuando pongo this
en una subactividad para crear un adaptador, no funciona.
Aquí tomamos contexto variable:
private Context acontext;
Hacer que el constructor del adaptador tome otra entrada como:
public Adapter_order_cancel(Context context,String[] myDataset, String[] job_id, String[] category, String[] name, String[] address) {
mDataset = myDataset;
_job_id = job_id;
_category = category;
_name = name;
acontext = context;
}
Este es un detector de clics en el que usamos el contexto:
v.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
acontext.startActivity(new Intent(acontext, OrderDetailPage.class));
}
});
Puede obtener contexto de varias maneras:
Por la Actividad, usando Your_Activity_Name.this
Por la aplicación, utilizando getApplicationContext()
Por la Vista, usando Your_View.getContext()
El único que no recomendaría es usar getBaseContext()
. Si necesita algo universal, tenga una variable estática pública en su actividad principal y asígnele el contexto de la aplicación cuando ésta se inicie. De esta manera siempre puedes llamar a Your_Activity.your_context_variable
Puedes usar getBaseContext()
pero este not a local context
es not a local context
.
getApplicationContext()
puede obtener el valor de contexto