Это мой код, он всегда попадает в другое, даже когда я знаю, что значение, которое происходит (через отладчик), пуст.
name = cursor.getString(cursor.getColumnIndex("Genus")) + " " + cursor.getString(cursor.getColumnIndex("Species"));
if(name != "" && name != null)
tv.setText(name);
else
tv.setText("Error");
При сравнении объектов вы должны использовать метод Object.equals(Object). Использование == or!= С объектами вернет true только в том случае, если оба объекта ссылаются на одно и то же. Вот почему вы пропадаете к другому.
name.equals(""), вероятно, вы хотите использовать.
Кроме того, все будет работать лучше всего, если вы сделали что-то вроде этого:
if(name != null && !"".equals(name))
tv.setText(name);
else
tv.setText("Error");
Я знаю, что это старый вопрос, по-прежнему способствующий альтернативному решению
Нижеприведенное решение будет работать, если вы вставляете ""
в строку ur при его обновлении или вставляете новую запись для пустого поля.
if(name.length() > 0 )
tv.setText(name);
else
tv.setText("Error");
Нижеприведенное решение будет работать, если вы вставляете null
в строку ur при его обновлении или вставляете новую запись для пустого поля (скажем, edittext).
или если в базе уже создана строка без записи.
if(name != null )
tv.setText(name);
else
tv.setText("Error");
База данных принимает пустую ячейку как null
, если itz не обновляется вручную позже, вставив ""
или некоторое строковое значение.
Оба работали для меня.
Ну Cptcecil
использовать механизм обработки ошибок try-catch.. вместо if... else.
Всякий раз, когда вы будете пытаться читать из пустого курсора... он выдает исключение, которое вы можете поймать и ответить соответствующим образом, не нарушая при этом свою заявку.
Спасибо
tv.setText()
вnull
или в""
и никакие исключения не будут выброшены, tv просто будет пустым.