Отказ от ответственности: я пытался найти в Google / найти другие решения, но не смог найти каких-либо конкретных решений для моей проблемы.
У меня есть поле editText (FahrenheitEditText), которое принимает числовое значение в градусах Фаренгейта и должно преобразовать его в градусы Цельсия после того, как пользователь нажмет клавишу «Готово».
Я пытался написать метод вне метода onEditorAction для его преобразования. Я также попытался реализовать преобразование в операторе if. Также я попытался использовать IME_ACTION_GO, но это не сработало.
package com.murach.tempconverter;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
public class TempConverterActivity extends Activity {
private float celsius;
EditText editText;
TextView displayCelsius;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_temp_converter);
displayCelsius = (TextView) findViewById(R.id.celciusTextView);
editText = (EditText) findViewById(R.id.fahrenheitEditText);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_GO)
{
float fahrenheitInput = Float.parseFloat(editText.getText().toString());
celsius = convertFahrenheitToCelcius(fahrenheitInput);
displayCelsius.setText(" " + celsius);
}
return false;
}
});
}
public float convertFahrenheitToCelcius(float fahrenheit) {
celsius = (fahrenheit-32)*(5/9);
return celsius;
}
}
Я пытался ввести число, такое как 100, и ожидал, что появится 37,778, но вместо этого появился 0.0.
решено: операция 5/9 сводилась к нулю, потому что я не объявлял их как плавающие значения. поэтому я заменил 5/9 на 5f / 9f, и это сработало