2011-06-04 20 views
5

Tengo un problema en mi aplicación. Tengo algunas listas y cada una de ellas tiene una fecha. Si la fecha de una lista es hoy, hice una Notificación, y en mi notificación coloco los artículos de esa lista. El problema es que si mi lista está vacía, obtengo la fuerza Cerrar. Puse la condición para hacer la notificación solo si el cursor no es nulo, pero parece que esto no funciona. ¿Me puede ayudar a encontrar dónde está el problema?Cursor nulo en Android

Aquí está una parte del código:

cr = db.fetchListId(id); 
startManagingCursor(cr); 

s = new StringBuilder(100); 
if (cr != null) { 
    do { 
    String myList = ""; 
    myList += cr.getString(2) + " " + cr.getString(3) 
     + cr.getString(4) + "," + "\n"; 
    s.append(myList); 

    } while (cr.moveToNext()); 
    s.append('.'); 
    System.out.println("!!heyeheeye!" + s + "!!!!"); 
    hey(list); 
} 

where hey(list) is a function where is made the notification. 

    private void hey(String list) { 
    notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    CharSequence NotificationTicket = "Hey"; 

    long when = System.currentTimeMillis(); 

    Notification notification = new Notification(R.drawable.icon, 
               NotificationTicket, when); 

    RemoteViews contentView = new RemoteViews(getPackageName(), 
              R.layout.proba); 
    contentView.setImageViewResource(R.id.image, R.drawable.icon); 
    contentView.setTextViewText(R.id.notif, 
           "Today,you must go for shopping for your list '" + list + "'. " 
           + "Don't forget!!!" + "\n" + "You must buy :" + "\n" 
           + s.toString() + "\n"); 
    notification.contentView = contentView; 


    Context context = getApplicationContext(); 

    Intent notifyIntent = new Intent(context, Lists.class); 

    Intent notificationIntent = new Intent(this, Lists.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
                  notificationIntent, 0); 
    notification.contentIntent = contentIntent; 

    notificationManager.notify(ID_NOTIFICATION, notification); 
    notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 


       | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
} 

Respuesta

6

Añada la siguiente comprobación para ver si el cursor tiene ningún resultado:

if (cr != null && cr.moveToFirst()) { 
    // ... 
} 

Es necesario moveToFirst() antes de la obtención de datos. Como está utilizando un do ... mientras que en vez de while(), no está inicializando el cursor correctamente.

+0

Gracias. Tienes razón. Ahora, funciona ... – Gaby

Cuestiones relacionadas