Вызов метода может вызвать java NullpointerException

У меня есть код:

public String getNameUpdateEvent(long id) { Cursor mCursor = db.rawQuery("select name from events WHERE _id=" + id + ";", null); if (mCursor != null) { mCursor.moveToFirst(); } String updateNameEvent; updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name")); return updateNameEvent; } 

И я получаю предупреждение

  Warning:(173, 45) Method invocation 'mCursor.getColumnIndex("name")' may produce 'java.lang.NullPointerException' 

Как я могу исправить это PLS?

Ваш курсор не может быть null , он всегда будет иметь какое-либо значение. Но курсор может быть пустым, поэтому сначала вы должны перейти к первой строке в курсоре с помощью метода moveToFirst() , и если он вернет true это означает, что этот курсор имеет хотя бы одну строку, поэтому вы можете сделать все, что хотите, если Он возвращает false – это означает, что для вашего запроса нет ничего, поэтому у вас нет строк для получения данных. Ваш код должен выглядеть так:

 public String getNameUpdateEvent(long id) { Cursor mCursor = db.rawQuery("select name from events WHERE _id=" + id + ";", null); String updateNameEvent = null; if (mCursor != null && mCursor.moveToFirst()) { updateNameEvent = mCursor.getString(mCursor.getColumnIndex("name")); } return updateNameEvent; } 

Решение 1. Поскольку вы жестко кодируете SQL, почему бы не жестко кодировать индекс

  updateNameEvent = mCursor.getString(0); 

Решение 2:

 try{ updateNameEvent = mCursor.getString(mCursor.getColumnIndexOrThrow("name")); }catch(IllegalArgumentException ie){ updateNameEvent = 0; } 

Метод getColumnIndexOrThrow будет вызывать IllegalArgumentException, если столбец не существует.

Решение 1 выполняется быстрее и проще.