Java 覆盖Numpad_点
我有4个编辑文本<代码>八位字节1,Java 覆盖Numpad_点,java,android,onkeydown,textchanged,Java,Android,Onkeydown,Textchanged,我有4个编辑文本八位字节1,oct2,oct3,oct4。这些编辑文本的类型为numberDecimal。我最初关注的是oct1。我需要它,因此当用户按下(numpad点)时,它将不输入oct,清除焦点并聚焦到下一个编辑文本 这应该很容易,但对我来说却令人沮丧。这就是我尝试过的 覆盖onKeyDown。这甚至不会产生日志 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyC
oct2
,oct3
,oct4
。这些编辑文本的类型为numberDecimal
。我最初关注的是oct1
。我需要它,因此当用户按下
(numpad点)时,它将不输入
oct,清除焦点并聚焦到下一个编辑文本
这应该很容易,但对我来说却令人沮丧。这就是我尝试过的
覆盖onKeyDown
。这甚至不会产生日志
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_NUMPAD_DOT){
oct3.clearFocus();
oct4.requestFocus();
return true;
}
Log.d("KeyCode", String.valueOf(keyCode));
Log.d("event", String.valueOf(event));
return false;
}
然后这个。我有很多不同的版本。我已经能够用它切换焦点,但不能删除
oct3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count > 0){
if(s.charAt(s.length()-1) == ".".charAt(0)){
Log.d("Sequence", "Noticed a \".\"");
isPeriod = true;
} else {
Log.d("Sequence", "Noticed a \""+s+"\"");
}
}
}
@Override
public void afterTextChanged(Editable s) {
if(isPeriod){
s.delete(s.length() -1, s.length() -1);
oct3.clearFocus();
isPeriod = false;
oct4.requestFocus();
}
}
});
尝试在
onTextChanged
中设置它:
listener = (new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count > 0){
if(s.charAt(s.length()-1) == '.'){
Log.d("Sequence", "Noticed a \".\"");
CharSequence text = s.subSequence(0, s.length()-1);
Log.d("VIEW CLICKED:", String.valueOf(getCurrentFocus()));
setTextAndAdvance(getCurrentFocus(), text);
} else {
Log.d("Sequence", "Noticed a \""+s+"\"");
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});