嗨首先抱歉我的英文不好我想计算imc值并影响TextView
中的结果我希望它能实时输入值,但是有一个错误我没有知道是什么。
public class MainActivity extends AppCompatActivity {
//déclaration des zones de texte et du boutton
EditText poids, taille, age;
Button calc;
TextView resultat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//récupération des zones de texte
poids = (EditText) findViewById(R.id.edtpoid);
taille = (EditText) findViewById(R.id.edttaille);
age = (EditText) findViewById(R.id.edtage);
String strpoids = poids.getText().toString();
final String strtaille = taille.getText().toString();
final String strage = age.getText().toString();
//parsing des string en double pour les utiliser dans le calcule
final Double dage = Double.parseDouble(strage);
final Double dtaille = Double.parseDouble(strtaille);
final Double dpoids = Double.parseDouble(strpoids);
//formule de calcule imc
final Double IMC = dpoids / (dtaille * dtaille);
final String strimc = IMC.toString();
final String sstrimc = strimc.substring(0, 5);
taille.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) {
resultat = (TextView) findViewById(R.id.res);
//affectation du valeur au textview
resultat.setText(sstrimc);
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 0 :(得分:0)
你必须将你的方程式放在监听器中,以便每次更改文本时都能更新,查看代码片段我只是移动了代码。
public class MainActivity extends AppCompatActivity { //déclaration des zones de texte et du boutton EditText poids, taille, age; Button calc; TextView resultat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //récupération des zones de texte poids = (EditText) findViewById(R.id.edtpoid); taille = (EditText) findViewById(R.id.edttaille); age = (EditText) findViewById(R.id.edtage); resultat = (TextView) findViewById(R.id.res); taille.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) { String strpoids = poids.getText().toString(); String strtaille = taille.getText().toString(); String strage = age.getText().toString(); //parsing des string en double pour les utiliser dans le calcule Double dage = Double.parseDouble(strage); Double dtaille = Double.parseDouble(strtaille); Double dpoids = Double.parseDouble(strpoids); //formule de calcule imc Double IMC = dpoids / (dtaille * dtaille); String strimc = IMC.toString(); String sstrimc = strimc.substring(0, 5); //affectation du valeur au textview resultat.setText(sstrimc); } @Override public void afterTextChanged(Editable s) { } }); }