Почему мое приложение Android Unit Converter не обновляется и не отображает преобразованный результат, когда я нажимаю кAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему мое приложение Android Unit Converter не обновляется и не отображает преобразованный результат, когда я нажимаю к

Сообщение Anonymous »

Конвертер единиц измерения
Я создаю простое приложение для преобразования единиц измерения для Android на Java, используя EditText, Spinner, Button и TextView. Пользовательский интерфейс загружается правильно, но когда я нажимаю кнопку Преобразовать, ничего не происходит — ни ошибок, ни вывода, ни видимых изменений в поле результата.
Вот что я уже проверил и заметил:
Вероятные причины (частые):
  • Обработчик пользовательского интерфейса не подключен — кнопка onClick или Идентификаторы findViewById могут не совпадать с идентификаторами макета.
  • Проблема синтаксического анализа — проблема с пустым вводом или десятичным разделителем, вызывающая молчаливое исключение NumberFormatException.
  • Представление результатов не обновляется в потоке пользовательского интерфейса.
  • Логика преобразования возвращает 0 или неправильные ключи единиц измерения.
  • Исключения обнаруживаются и игнорируются (нет видимого журнала).
Краткий контрольный список, который я пробовал:
  • Проверенные идентификаторы в макете setContentView соответствуют вызовам findViewById.
  • Гарантированный setOnClickListener действительно установлен для кнопки.
  • Обрезанные и проверенные входные данные перед анализом (

    Код: Выделить всё

    Double.parseDouble
    ).
  • Проверено логарифмическое сообщение — видимых исключений нет.
  • Подтвержденные счетчики возвращают действительные строковые значения для логики преобразования.
Пример рабочей справки (упрощенный)
Вот пример, который работает должным образом (метры ↔ километры) для справки:
Активность Java:

Код: Выделить всё

package com.example.unitconverter;

import android.os.Bundle;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;

public class UnitConverterActivity extends AppCompatActivity {
private EditText input;
private Spinner fromUnit, toUnit;
private TextView result;
private Button convertBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

input = findViewById(R.id.input_value);
fromUnit = findViewById(R.id.spinner_from);
toUnit = findViewById(R.id.spinner_to);
result = findViewById(R.id.text_result);
convertBtn = findViewById(R.id.button_convert);

String[] units = { "meters", "kilometers" };
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, units);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
fromUnit.setAdapter(adapter);
toUnit.setAdapter(adapter);

convertBtn.setOnClickListener(v -> {
String raw = input.getText().toString().trim();
if (raw.isEmpty()) {
result.setText("Enter a value");
return;
}
double value;
try {
value = Double.parseDouble(raw);
} catch (NumberFormatException e) {
result.setText("Invalid number");
return;
}
String from = (String) fromUnit.getSelectedItem();
String to = (String) toUnit.getSelectedItem();
double out = convert(value, from, to);
result.setText(String.valueOf(out));
});
}

private double convert(double value, String from, String to) {
if (from.equals(to)) return value;
if (from.equals("meters") && to.equals("kilometers")) return value / 1000.0;
if (from.equals("kilometers") && to.equals("meters")) return value * 1000.0;
return value;
}
}
Макет (

Код: Выделить всё

activity_main.xml
):[/b] Вопрос:
Что может привести к тому, что событие нажатия кнопки «Преобразовать» не обновит результат в моем приложении конвертера единиц Android, даже если макет и логика кажутся правильными?
Каковы наиболее распространенные ошибки или неправильные настройки, которые мешают setOnClickListener запустить или обновить пользовательский интерфейс?


Подробнее здесь: https://stackoverflow.com/questions/798 ... d-result-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»