Android - Как остановить сохранение формы в моей базе данных - PullRequest
0 голосов
/ 22 марта 2011

Итак, форма, которую я написал, имеет два поля: тело и заголовок. Я надеюсь получить форму для выдачи тостового сообщения, если эти поля не содержат данных, чтобы пользователь не мог сохранить их в базе данных. Код должен делать одну из трех вещей. Первое, что я пытаюсь сделать выше. Во-вторых, если намерение идентификатора имеет значение NULL, оно создаст новую запись, а если намерение идентификатора имеет содержимое, оно обновит запись базы данных новым содержимым. Проблема, с которой я сталкиваюсь, заключается в том, что когда поля формы пусты, они все равно сохраняются. Кажется, это полностью пропустило мое первое утверждение IF, и я не могу понять, почему. Я попытался использовать как null, так и "" для первого оператора IF, как по отдельности, так и вместе. Помогите?

  submitBtn.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                String titleInsert = titleEdit.getText().toString();
                String bodyInsert = bodyEdit.getText().toString();
                String dateTimeValue = dateTimeTextView.getText().toString();
                if ((titleInsert == null || titleInsert == "") || (bodyInsert == null || bodyInsert == "")){
                    Context context = getApplicationContext();
                    CharSequence text = "Please make sure the Title and Body are both filled before saving";
                    int duration = Toast.LENGTH_SHORT;

                    Toast toast = Toast.makeText(context, text, duration);
                    toast.show();
                }else if(intentRowId == null){
                    try{
                    mDb.open();
                    mDb.createNote(Integer.parseInt(mIntentId), titleInsert, bodyInsert, dateTimeValue);
                    finish();
                    } catch (Exception e) {
                    e.printStackTrace();
                    }
                } else {
                    try{
                        mDb.open();
                        mDb.updateNote(longRowId, titleInsert, bodyInsert);
                        finish();
                    } catch (Exception e){
                        e.printStackTrace();
                        Context context = getApplicationContext();
                        CharSequence text = "SQL Exception Thrown: " + e;
                        int duration = Toast.LENGTH_SHORT;
                        Toast toast = Toast.makeText(context, text, duration);
                        toast.show();
                    }
                }
                }
        });

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

Попробуйте:

 titleInsert.equals("")

или

 "".equals(titleInsert)

вместо

 titleInsert == ""
0 голосов
/ 22 марта 2011

Попробуйте titleInsert.equals("") и т. Д.

Кроме того, вы можете вызвать titleInsert = titleInsert.trim();, если оно не равно нулю, чтобы перехватывать пустые строки, такие как " ".

Редактировать:если вы можете использовать Apache commons lang, вы можете использовать класс StringUtils, который имеет метод isBlank(), который возвращает true, если строка пустая, пустая или содержит только пробел.

Edit2:

Краткое объяснение по titleInsert.equals(""): == обычно проверяет один и тот же объект, а не равенство по данным.Таким образом, titleInsert и "" не обязательно являются одним и тем же объектом, но могут быть равны (пустая строка).Обратите внимание, что вы должны использовать equals почти во всех случаях, когда имеете дело с (ненулевыми) объектами, если только вы не знаете, что вместо этого вы хотите == (что редко, кроме проверки obj == null).

Краткий пример: new Long(1) == 1L, скорее всего, выдаст false, поскольку new Long(1) создает объект, отличный от объекта Long, который используется для литерала 1L (также обратите внимание, что я исключил автоматический (un) бокс с помощью 1 L ).С другой стороны, new Long(1).equals(1L) приведет к истине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...