2016-02-29 32 views
0

嗨,首先對不起我的英語不好我想計算imc值並影響TextView的結果,我希望它能夠實時輸入值,但出現錯誤我不知道是什麼。在textchange監聽器上創建一個公式爲edittext

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

它有助於還把錯誤,以便其他人可以幫助你 – Hansie

+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) { 

      } 
     }); 
    } 

+0

當我開始輸入中,我添加了聽者的應用程序崩潰的EditText並在logcat中 此消息致命例外:main java.lang.NumberFormatException:無效的雙精度:「」 –

相關問題