@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed1 = (EditText) findViewById(R.id.editText);
ed2 = (EditText) findViewById(R.id.editText2);
ed3 = (EditText) findViewById(R.id.editText3);
tv = (TextView) findViewById(R.id.textView);
sentence = tv.getText().toString(); //gettingthestring.
edtv1 = ed1.getText().toString();
edtv2 = ed2.getText().toString();
edtv3 = ed3.getText().toString();
callMethod();
}
private void callMethod() {
if (ed1 != null) {
ed1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
sen1 =(sentence.replaceFirst("__", "___"));
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
tv.setText(sen1.replace("___" ,"_"+s.toString()+"_"));
}
});
edtv1 = ed1.getText().toString();
}
callMethod2();
}
private void callMethod2() {
if (ed2 != null) {
ed2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
sen2 = tv.getText().toString(); //got the new string
//sen = sometext _ed1 value_ sometext __ sometext __ sometext.("__" = underscore)
sen2 =(sen2.replaceFirst("__","___"));
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
tv.setText(sen2.replace("___","_"+s.toString()+"_"));
}
});
edtv2 = ed2.getText().toString();
sen2 = sentence;
}
callMethod3();
//some code
}
문제점 : 두 번째와 세 번째의 경우
"__"(밑줄) 내가 얼마나 많은 문자가 사용자의 입력에 관계없이 문자열의 첫 번째 문자를보고하고 여기에 내 코드입니다 .
문서 읽기 : https://developer.android.com/reference/android/text/TextWatcher.html TextWatcher는'EditText'에서 각 문자가 변경된 후에 호출 될 것이므로 기본 동작입니다 .. !! –