Buenas, estoy un poco iniciado en la programación android y estoy haciendo un proyecto para clase.
Mi aplicación entre otras funciones, hace una consulta a base de datos a través de php, recojo el resultado en un array en JSON y muestro los resultados en un listview. El problema surge cuando hago clic en un elemento del listview quiero que se muestre un dialogo, cuando le doy clic me sale lo de forzar cierre.
Dejo la parte del código que me está dando problemas.
Código Java:
Ver originalpublic class SacarLibro extends Activity{
....
static class Tarea2
extends AsyncTask
<ListView,
Void, ArrayAdapter
<Libros
>> {
ArrayList<Libros> listaLibros = new ArrayList<Libros>();
AlertDialog.Builder dialogo1;
public void cargarDialogo
(Context contexto2
){ this.contexto2 = contexto2;
}
public void cargarContenido
(Context contexto
) { this.contexto = contexto;
}
@Override
protected void onPreExecute() {
}
@Override
protected ArrayAdapter
<Libros
> doInBackground
(ListView...
params) { ....
}
@Override
protected void onPostExecute(ArrayAdapter<Libros> result) {
list.setAdapter(result);
mostrarDialogo();
//Log.e("Extra", user);
}
protected void mostrarDialogo() {
// TODO Auto-generated method stub
list.setOnItemLongClickListener(new OnItemLongClickListener(){
@Override
public boolean onItemLongClick
(AdapterView
<?> arg0,
View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
dialogo1 = new AlertDialog.Builder(contexto2);
dialogo1.setTitle("Importante");
dialogo1.setMessage("¿ Quieres sacar este libro ?");
dialogo1.setCancelable(false);
dialogo1.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogo1, int id) {
aceptar();
}
});
dialogo1.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogo1, int id) {
cancelar();
}
});
dialogo1.show();
return false;
}
});
}
}
Según la documentación oficial en "dialogo1 = new AlertDialog.Builder(contexto2);", hay que pasar el contexto de la aplicación mediante getApplicationContext() pero a mi no me deja, eclipse me da error, también he leido en otras páginas pasar el contexto con this, con getActivity(), con NombreDeMiActividad.this, y más maneras, pero en todas eclipse me da error excepto como lo tengo yo.
El error que me da el log es: Unable to add window token null is not for an application
Espero que me puedan ayudar puesto que llevo ya varios días dando vueltas y no consigo nada.
Saludos.