我有这个字符串:
String sentence = sometext __ sometext __ sometext __ sometext.("__" = underscore)
因此,为了代替下划线,我想将EditText值放在用户实时输入的内容中。这是我的代码:
@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
}
问题:
对于第二个和第三个" __"(下划线)我只看到字符串的第一个字符,而不管用户输入了多少个字符。
答案 0 :(得分:0)
在afterTextChanged()
中,只需将更新后的句子保存在字符串中,然后将该字符串用于下一个afterTextChanged()
。
String update1 = txtview.getText().toString();