Android null cursor

I have a problem in my application. I have several lists, and each of them has a date. If the list date is today, I made a notification, and in my notification I put items from this list. The problem is that if my list is empty, I get a Close power. I put a condition on the notification only if the cursor is not null, but it seems like this is not working. Can you help me find where the problem is?

Here is the piece of code:

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);
}
+5
source share
1 answer

Add the following check to see if the cursor has any results:

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

ToFirst(). do... while while(), .

+6

All Articles