![](/img/trans.png)
[英]how do i Display text from editText in activity 1 in textView in activity 2,
[英]How can I instantly display text from an Edittext in a TextView?
我基本上是想做一件简单的事情:我有一个Edittext和一个TextView。 现在,我想立即(逐个字符)显示在textview的edittext中输入的文本。 此外,当按退格键并从editext删除一个字符时,这也应该在textview中发生。
简而言之:我想立即在textview中显示来自edittext的所有内容。 我怎样才能做到这一点?
这是我尝试的一些代码,但对我而言不起作用。 当我在装有Android 4.0的模拟器上运行它(并使用计算机键盘进行输入)时,每个字符在textview中显示两次,而edittext中没有文本。 另一方面,当我在Android 2.3.3上使用仿真器(并使用仿真器键盘进行输入)时,textview中没有文本,但是edittext可以正常工作。
在onCreate()
我调用我的方法setListener()
。 看起来像这样:
private void setListener() {
mEdittext.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
String str = mTextview.getText().toString();
if(keyCode == KeyEvent.KEYCODE_DEL && str.length() > 0) {
str = str.substring(0, str.length()-1);
} else {
char newChar = (char)event.getUnicodeChar();
str = str.concat(Character.toString(newChar)) ;
}
mTextview.setText(str);
return true;
}
});
}
有任何解决办法吗?
您可以使用TextWatcher
在输入文本时设置TextView:
TextWatcher watcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
mTextview.setText(mEdittext.getText().toString());
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
};
mEdittext.addTextChangedListener(watcher);
尝试这个:
@Override
protected void onStart() {
final EditText edit = (EditText) findViewById(R.id.editText1);
edit.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
TextView txt = (TextView) findViewById(R.id.textView1);
txt.setText(edit.getText().toString());
return false;
}
});
super.onStart();
}
如果要在移至下一个字段后打印到textview,可以使用onFocusChangeListner
//onCreate TextView tv = (TextView) findViewById(R.id.textView1); EditText et = (EditText) findViewById(R.id.editText1); et.setOnFocusChangeListener(mylistener); private OnFocusChangeListener mylistener = new OnFocusChangeListener(){ @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus) { tv.setText(et.getText().toString()); } } };
如果要在输入键时保持动态更改文本,请使用:
et.addTextChangedListener(watcher); TextWatcher watcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { if(s.length() > 0) tv.setText(s.toString()); }
};
要么
使用像eickeee一样说明的OnKeyListener或像TronicZomB一样说明TextWatcher的onTextChanged事件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.