Передача выборочных данных через намерения

Я делаю базовое приложение для контактов с 4 полями; имя, номер, веб-сайт и местоположение.

Теперь при вводе проверяет и предлагает пользователю ввести, если он оставляет номер пустым.

Но я хочу, чтобы сеть и местоположение были необязательными. Когда данные существуют; Я хочу, чтобы это было передано, но когда оно не существует, я хочу, чтобы оно ничего не делало.

Вот мой код.

if (etName.getText().toString().isEmpty() || etNumber.getText().toString().isEmpty())
{
    Toast.makeText(this, "Please fill out the necessary fields", Toast.LENGTH_SHORT).show();
}
else
{
    Intent intent = new Intent();
    intent.putExtra("name", etName.getText().toString());
    intent.putExtra("number", etNumber.getText().toString().trim());

    if (etWeb.getText().toString().trim() != null)
    {
        intent.putExtra("web", etNumber.getText().toString().trim());
    }
    if (etLocation.getText().toString() != null)
    {
        intent.putExtra("location", etLocation.getText().toString().trim());
    }

Проблема в том, что код говорит, что условие etWeb.getText().toString().trim() != null и etLocation.getText().toString().trim() != null всегда истинно.

Какие изменения мне следует внести?

да, это всегда будет правдой

Rajasekaran M 22.05.2019 15:26

Как мне это исправить?

Charizard_knows_to_code 22.05.2019 15:27

проверить мой ответ

Rajasekaran M 22.05.2019 15:31

@Zoe, спасибо за подсказку, буду иметь в виду

Charizard_knows_to_code 23.05.2019 05:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
34
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы должны проверить isEmpty() вместо null.

Я пытался это сделать, но в завершении кода такого нет. Не могли бы вы помочь mw с этим?

Charizard_knows_to_code 22.05.2019 15:29

Это странное поведение.

p.mathew13 22.05.2019 15:31

Вы можете проверить, что строка не пуста, а не равна нулю

if (!android.text.TextUtils.isEmpty(etWeb.getText().toString().trim())){
 intent.putExtra("web", etWeb.getText().toString().trim());
}

или можете проверить

 if (etWeb.getText().toString().trim().length() > 0){
     intent.putExtra("web", etWeb.getText().toString().trim());
  }

Эй, не могли бы вы объяснить "! android.text.TextUtils" ??. Потому что если я заменю его на etWeb, он выдаст мне ошибку

Charizard_knows_to_code 22.05.2019 15:37

TextUtils — это класс Utility, представленный в android. Вам нужно передать свои строковые данные в функцию isEmpty(), чтобы проверить, пусто оно или нет.

p.mathew13 22.05.2019 15:41

О, ваш комментарий прояснил мою ошибку, я заменил Textutils на etWeb.

Charizard_knows_to_code 22.05.2019 15:45

Кроме того, если бы вы могли помочь с частью, это было бы здорово. Как заставить приложение ничего не делать, если ничего не вводилось?

Charizard_knows_to_code 22.05.2019 15:46

К вашему сведению: метод getText() вернет CharSequence, он всегда будет пустым, даже если вы ничего не ввели.

Rajasekaran M 22.05.2019 15:47
Ответ принят как подходящий

Вы можете попробовать приведенный ниже код, чтобы проверить, доступны ли данные о погоде или нет.

if (!etWeb.getText().toString().equals(""))
{
    intent.putExtra("web", etNumber.getText().toString().trim());
}

Приведенный выше код проверит, присутствуют ли данные в поле.

Хорошо, это работает, также, если бы вы могли помочь мне с другой проблемой, как я могу заставить приложение ничего не делать, если ничего не было введено?

Charizard_knows_to_code 22.05.2019 15:49

Что вы подразумеваете под "ничего не делать"?

Abdul Waheed 22.05.2019 15:50

Я хочу, чтобы поля web и location были необязательными, поэтому я передаю операторы if, чтобы проверить, пусты они или нет. Если они не пусты, данные передаются вперед, но если данные не были введены, приложение должно быть в порядке, и оно не должно падать при нажатии кнопки местоположения (эти кнопки — это место, куда отправляются данные, если вы хотите, чтобы я мог добавить их код к вопросу)

Charizard_knows_to_code 22.05.2019 15:54

пожалуйста, добавьте новый вопрос и опубликуйте обновленный код там.

Abdul Waheed 22.05.2019 15:58

Я задал вопрос, но оказалось, что я могу публиковать только один вопрос каждые 90 минут. Я опубликую ссылку здесь, когда сделаю.

Charizard_knows_to_code 22.05.2019 16:08

Ничего, методом проб и ошибок я внес соответствующие изменения

Charizard_knows_to_code 23.05.2019 05:35

Другие вопросы по теме