我正在创建一个PV = nRT计算器,让用户输入三个给定变量中的任何一个。如果不使用按钮,程序将自动检测到已经给出了三个变量,并自动计算第四个缺失变量。到目前为止,这是我的代码:
Thread calculate = new Thread(new Runnable() {
@Override
public void run() {
try {
if (Calculations.isCalcable(pressure.getText().toString(),
volume.getText().toString(),
moles.getText().toString(),
temperature.getText().toString()) == true) {
if (pressure.getText().toString().length() == 0) {
pressure.setText("1010");
} else if (volume.getText().toString().length() == 0) {
volume.setText("1010");
} else if (moles.getText().toString().length() == 0) {
moles.setText("1010");
} else {
temperature.setText("1010");
}
}
} catch (Exception e){
}
}
});
calculate.start();
这不起作用。此外,我不确定我是否真的应该使用线程。这是当我输入三个变量时发生的事情(R变量是一个常数):
在这种情况下,温度文本应该已更改为“1010”。
这是我的isCalcable类:
public class Calculations {
public static boolean isCalcable (String pressure, String volume, String moles, String temperature){
int hasNumber = 0;
if (pressure.length() > 0){
hasNumber++;
}
if (volume.length() > 0){
hasNumber++;
}
if (moles.length() > 0){
hasNumber++;
}
if (temperature.length() > 0){
hasNumber++;
}
if (hasNumber == 3){
return true;
}
return false;
}
}
我该怎么办?
答案 0 :(得分:1)
您需要检测是否已输入值 文字字段对吗?那你看过TextWatcher了吗? 关于如何使用它的Here is an example。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//code
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//code
}
@Override
public void afterTextChanged(Editable s) {
//code
}
});
基本上,您将TextWatcher应用于三个字段并观察。 如果所有三个字段都具有您需要的值,则进行计算。
也许你可以在活动中添加全局变量,并在文本字段的onTextChanged()方法中检查这些全局变量,如果其中三个变量已经完成,则设置第四个变量的值。