我的代码需要帮助。
我有一个editText
,用户可以在其中输入商店的营业时间和结束时间,并且有一个带有“关闭”的复选框
。
用户输入开始时间09:00
,然后使用文本观察器
添加一个空格和破折号,然后用户输入结束时间19 :00
,这样最后的时间就是 09:00 - 19:00
。
例如,如果商店周六不营业,则用户必须单击复选框
,并且当单击复选框
时,editText
> 已设置文本并显示“已关闭”。
问题是,当我使用文本观察器
时,如果长度等于6,它会添加连字符,然后当用户单击复选框而不是写“已关闭”时,它会显示“关闭-”。
如何删除该破折号?
当 editText
中只有字母时,Text Watcher
会关闭。
有人能解决我的问题吗?你有什么建议吗?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_insert__orari);
lunedi_inizio_uno = (EditText)findViewById(R.id.editText_uno_lunedi_inizio);
lunediUno = (CheckBox)findViewById(R.id.checkBox_uno_lunedi);
lunedi_inizio_uno.addTextChangedListener(new TextWatcher() {
int keyDell;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
lunedi_inizio_uno.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL)
keyDell = 1;
int prevL = 0;
return false;
}
});
if (keyDell == 0) {
int len = lunedi_inizio_uno.getText().length();
if(len == 5) {
lunedi_inizio_uno.setText(lunedi_inizio_uno.getText() + " ");
lunedi_inizio_uno.setSelection(lunedi_inizio_uno.getText().length());
}if(len == 6) {
lunedi_inizio_uno.setText(lunedi_inizio_uno.getText() + "-");
lunedi_inizio_uno.setSelection(lunedi_inizio_uno.getText().length());
}if(len == 7) {
lunedi_inizio_uno.setText(lunedi_inizio_uno.getText() + " ");
lunedi_inizio_uno.setSelection(lunedi_inizio_uno.getText().length());
}
} else {
keyDell = 0;
}
}
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
});
lunediUno.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
lunedi_inizio_uno.setText("Chiuso");
}
}
});
}
最佳答案
问题我解决了,在长度等于5的地方加上“-”就可以了,消除了长度等于6和7的条件。
关于java - Android 在有字母时禁用文本观察器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56516718/