更新EditText时出错
在某些设备上,使用此代码,EditText to_quantity在要插入要在EditText from_quantity中转换的值期间不会实时更新。可能是什么问题?更新EditText时出错
编辑文本from_quantity:
from_quantity.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event){
try{
if(!(Double.isNaN(Double.valueOf(from_quantity.getText().toString())))){
convert(from_quantity.getText().toString(), "to");
}
}catch(NumberFormatException e){
Log.d("error", e.toString());
}
return false;
}
});
from_quantity.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
//Clear Quantities
from_quantity.setText("");
to_quantity.setText("");
return false;
}
});
编辑文本to_quantity:
to_quantity.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
try{
if(!(Double.isNaN(Double.valueOf(to_quantity.getText().toString())))) {
convert(to_quantity.getText().toString(), "from");
}
} catch(NumberFormatException e) {
Log.d("error", e.toString());
}
return false;
}
});
to_quantity.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
//Clear Quantities
from_quantity.setText("");
to_quantity.setText("");
return false;
}
});
如果使用软键盘您的设备,该OnKeyListener将不会被调用。你应该使用TextWatcher。
一些软件键盘不启动安其()事件。创建TextWatcher
并将其设置为监听器EditText
代替:
to_quantity.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String text = s.toString() ;
try{
if(!(Double.isNaN(Double.valueOf(text)))) {
convert(text, "from");
}
} catch(NumberFormatException e) {
Log.d("error", e.toString());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
但这种方式在两个EditText上,from_quantity和to_quantity,都不能协调,即增加的失真 – bisemanu 2013-05-11 11:11:01
我加了一段代码有关的EditText from_quantity – bisemanu 2013-05-11 11:20:10
我不明白这是什么意思不太协调......使用'TextWatcher'在'EditText'字段中,除了我使用'TextWatcher'而不是'OnKeyListener'外,它和你正在做的一样。如果它里面的代码没有做它应该做的事情,那是另外一回事。 – tbkn23 2013-05-11 11:50:05
,如果你想使用软键盘,你需要setFocusable到目标视图:
setFocusableInTouchMode(true); //Enable soft keyboard on touch for target view
setFocusable(true); //Enable hard keyboard to target view
把你的logcat的。 – Riser 2013-05-10 09:42:50
你想达到什么样的兄弟?您可以在编辑文本上使用焦点更改侦听器,并在编辑文本获得或失去焦点时实时执行这些内容。 – 2013-05-10 10:11:57