TextWatcher twIncluded = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(!(includedText.getText().toString().equals(""))) { double included = Double.parseDouble(includedText.getText().toString()); included = roundTwoDecimals(included); String amt = String.valueOf(roundTwoDecimals(included-(included/1.15))); String excluded = String.valueOf(included/1.15); System.out.println("The Amount is: "+amt); amountText.setText(amt); excludedText.removeTextChangedListener(twExcluded); excludedText.setText(excluded); excludedText.addTextChangedListener(twExcluded); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } } TextWatcher twExcluded = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(!(excludedText.getText().toString().equals(""))) { double excluded = Double.parseDouble(excludedText.getText().toString()); excluded = roundTwoDecimals(excluded); String amt = String.valueOf(roundTwoDecimals(excluded*0.15)); String included = String.valueOf(roundTwoDecimals(excluded+(excluded*0.15))); System.out.println("The Amount is: "+amt); amountText.setText(amt); includedText.removeTextChangedListener(twIncluded); includedText.setText(included); includedText.addTextChangedListener(twIncluded); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } } includedText.addTextChangedListener(twIncluded); // worked excludedText.addTextChangedListener(twExcluded);