나는 EditText가 눌려진 버튼에 따라 추가하고 제거하는 뷰를 구현했습니다. TextWatcher를 사용하여 숫자를 돈 형식으로 변경했습니다. 여기까지는 모든 것이 잘 작동합니다.EditText, TextWatcher help, 계속 이전 문자열 얻기
내 문제는 사용자가 첫 번째 EditText를 입력하고 추가 버튼을 누르면 발생합니다. 그런 다음 사용자가 두 번째 EditText에 입력 할 때 첫 번째 EditText 문자열로 입력 concats가 표시되고 두 번째 EditText에 표시되고 첫 번째 EditText도 연결됩니다. 그래서 기본적으로 두 EditText는 같은 문자열로 끝납니다. 다음은 내 코드입니다 : 내가 onTextChanged을 시도했습니다
amount = new EditText(this);
RelativeLayout.LayoutParams etLParams = new RelativeLayout.LayoutParams(
400, LayoutParams.WRAP_CONTENT);
etLParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
amount.setInputType(InputType.TYPE_CLASS_NUMBER);
amount.setLayoutParams(etLParams);
amount.setId(AMOUNT);
amount.setSingleLine();
amount.requestFocus();
amount.setCursorVisible(true);
amount.setGravity(Gravity.RIGHT);
amount.addTextChangedListener(new TextWatcher(){
String price="";
private EditText newAmount = new EditText(DutchPayActivity.this);
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.toString().equals(price)){
String cleanString = s.toString().replaceAll("[$,.]", "");
long parsed = Long.parseLong(cleanString);
NumberFormat nf = NumberFormat.getInstance();
price = nf.format(parsed);
s.append(price); //gave me error:java.lang.NumberFormatException: 66666666666666666666666666666666
newAmount.setText(price); //same result as before..
newAmount.setSelection(price.length());
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
});
() 등 내 사용자 정의 클래스와 구현하지만, 그냥 일을 얻을 수 없습니다.
amount.setId(AMOUNT);
왜 당신이 동적으로 생성 된 구성 요소의 ID를 설정하는 당신이 당신의 두 번째 글고 치기를 선언 할 경우
제목을 좀 더 건설적으로 만드십시오. – Ben
* "정말 심각합니다."* * 나도. 아무도 [FAQ] (http://stackoverflow.com/faq)에서 더 이상 적절한 질문을하는 법을 읽지 않습니다. –
다른 EditText는 어디에 있습니까? –