在textchange监听器上将等式转换为edittext

时间:2016-02-29 21:08:45

标签: android

嗨首先抱歉我的英文不好我想计算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) {

        }
    });

1 个答案:

答案 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) {

            }
        });
    }