2017-04-25 36 views
0

我有三個EditText元素。我想根據前兩個edittext值進行計算以存儲在thired編輯文本字段中。安卓文本觀察器計算丟失

但計算總是錯誤的。每當我從secound編輯文本中清除鍵入的值時,計算不能正常工作。

public void onTextChanged(CharSequence s, int a, int b, int c) { 
      try{ 
       a=Integer.parseInt(totamt.getText().toString().trim()); 
       b=Integer.parseInt(expenses.getText().toString().trim()); 
       c=Integer.parseInt(handover_amt.getText().toString().trim()); 
       int d = Integer.parseInt(String.valueOf(a)) - Integer.parseInt(String.valueOf(b)) - Integer.parseInt(String.valueOf(c)); 
       balance_amt.setText(String.valueOf(d)); 

       int myOB = Integer.parseInt(et_overall_balance.getText().toString().trim()); 
       int OverallBalance = Integer.parseInt(String.valueOf(myOB)) - Integer.parseInt(handover_amt.getText().toString().trim()); 
       et_overall_balance.setText(String.valueOf(OverallBalance)); 
       System.out.println(OverallBalance); 

      }catch(NumberFormatException numberEx) 
      { 
       System.out.println(numberEx); 
      } 

     } 
+0

你想在第三的EditText顯示什麼? –

+0

edittext3 = edittext1-edittext2。用戶將在edittext2中輸入值。 –

回答

0

使用下面的代碼

edittext2.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) { 
       if (edittext1.getText().toString().trim() != null && !edittext1.getText().toString().trim().equalsIgnoreCase("")) { 
        if (edittext2.getText().toString().trim() != null && !edittext2.getText().toString().trim().equalsIgnoreCase("")) { 
         edittext3.setText("" + (Double.parseDouble(edittext1.getText().toString().trim()) - Double.parseDouble(edittext2.getText().toString().trim()))); 
        } else { 
         Toast.makeText(activity, "Please enter value in edittext 2", Toast.LENGTH_LONG).show(); 
        } 
       } else { 
        Toast.makeText(activity, "Please enter value in edittext 1", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
+0

我試過你的代碼,但同樣的問題。 EDITTEXT1 = 5000;'EDITTEXT2 = 5'(假設我只輸入5); EDITTEXT3 = 4995;' 這個問題對於E.g來說仍然不錯。但是我在'EDITTEXT2 = 50'中輸入了一個值(5是在那裏,所以我只加了0)。現在結果是'EDITTEXT3 = 4945'。但我們需要** 4950 **的答案。 **問題是50將從舊的4995減去而不是從5000 ** –

+0

將以上監聽器添加到edittext1&edittext2&not on edittext3。 –

+0

感謝兄弟幫助我很多 –