public class MainActivity extends AppCompatActivity {
EditText Percent, mmolGlic, mgGlic;
double mmol = 0, mg = 0, perc = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Percent = (EditText) findViewById(R.id.percent);
mmolGlic = (EditText) findViewById(R.id.mmol_glic);
mgGlic = (EditText) findViewById(R.id.mg_glic);
/*mmolGlic.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
frommMol();
}
@Override
public void afterTextChanged(Editable s) {
}
});*/
Percent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
fromPercent();
}
@Override
public void afterTextChanged(Editable s) {
}
});
/*mgGlic.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
frommg();
}
});*/
}
public void frommMol() {
mmol = Double.parseDouble(mmolGlic.getText().toString());
perc = (mmol/10.929) + 2.15;
Percent.setText(String.format("%.2f", perc));
}
public void fromPercent(){
perc = Double.parseDouble(Percent.getText().toString());
mmol = (perc - 2.15) * 10.929;
mmolGlic.setText(String.format("%.2f", mmol));
mg = (perc*28.7) - 46.7;
mgGlic.setText(String.format("%.2f", mg));
}
public void frommg(){
mg = Double.parseDouble(mgGlic.getText().toString());
perc = (mg + 46.7)/28.7;
Percent.setText(String.format("%.2f", perc));
}
}, как обращаться с addTextChangedListener и памятью
Goodmorning все :)
это непрерывный вопрос из этого: Question 1
этот пример кода, что я пытаюсь делать. Но у меня есть некоторые проблемы. Я думаю, что большинство из них предназначены для логики переменных и как обрабатывать ввод в более EditTexts. например:
- Основная проблема заключается в том, что я не могу использовать более одного addTextChangedListener. Я пытаюсь объяснить лучше: если я оставлю код, как здесь, приложение выйдет из строя. Я не уверен, возможно, это связано с тем, как я обрабатываю три EditTexts.
- то у меня проблема, когда я удаляю текст: если у меня есть «5.99» и i пресса, когда он удаляет его, удаляет до 5, а затем сбой. Пробали я должен установить, когда текстовое поле пуст переменные = 0.
Вы можете мне помочь? Большое спасибо
Большое спасибо –
Можете ли вы объяснить мне, что вы наделали? Просто чтобы понять это лучше –
Я создал 3 textwatcher для всех 3 edittext отдельно. И из каждого метода расчета сначала делаю вычисления, а затем удаляю другой текстовый элемент, прежде чем устанавливать текст в edittext, потому что, если я не удалю textwatcher и setText в edittext, тогда он начнет вызывать рекурсивно друг друга. И снова я установил прослушиватель textwatcher тем, которые я удалил ранее, работает обычно, как и раньше. –