Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/05/2014, 03:43
jcastro3
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 1 mes
Puntos: 2
Problema con AlertDialog

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 original
  1. public class SacarLibro extends Activity{
  2. ....
  3.  
  4.  
  5.     static class Tarea2 extends AsyncTask<ListView, Void, ArrayAdapter<Libros>> {
  6.  
  7.         Context contexto;
  8.         Context contexto2;
  9.         ListView list;
  10.         InputStream is;
  11.         ArrayList<Libros> listaLibros = new ArrayList<Libros>();
  12.         AlertDialog.Builder dialogo1;
  13.        
  14.         public void cargarDialogo (Context contexto2){
  15.             this.contexto2 = contexto2;
  16.         }
  17.         public void cargarContenido(Context contexto) {
  18.             this.contexto = contexto;
  19.         }
  20.  
  21.         @Override
  22.         protected void onPreExecute() {
  23.  
  24.         }
  25.  
  26.         @Override
  27.         protected ArrayAdapter<Libros> doInBackground(ListView... params) {
  28.             ....
  29.                 }
  30.         @Override
  31.         protected void onPostExecute(ArrayAdapter<Libros> result) {
  32.             list.setAdapter(result);
  33.             mostrarDialogo();
  34.              //Log.e("Extra", user);
  35.            
  36.         }
  37.  
  38.         protected void mostrarDialogo() {
  39.             // TODO Auto-generated method stub
  40.             list.setOnItemLongClickListener(new OnItemLongClickListener(){
  41.  
  42.                 @Override
  43.                 public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
  44.                         int arg2, long arg3) {
  45.                     // TODO Auto-generated method stub
  46.                     dialogo1 = new AlertDialog.Builder(contexto2);
  47.                     dialogo1.setTitle("Importante");  
  48.                     dialogo1.setMessage("¿ Quieres sacar este libro ?");            
  49.                     dialogo1.setCancelable(false);  
  50.                     dialogo1.setPositiveButton("Confirmar", new DialogInterface.OnClickListener() {  
  51.                         public void onClick(DialogInterface dialogo1, int id) {  
  52.                             aceptar();  
  53.                         }  
  54.                     });  
  55.                     dialogo1.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {  
  56.                         public void onClick(DialogInterface dialogo1, int id) {  
  57.                             cancelar();
  58.                         }  
  59.                     });            
  60.                     dialogo1.show();
  61.                     return false;
  62.                 }
  63.                
  64.             });
  65.  
  66.            
  67.         }
  68.  
  69. }

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.

Última edición por jcastro3; 13/05/2014 a las 03:49