我需要代码方面的帮助。
我有一个editText
,用户输入商店的开门和关门时间,并且有一个带有"关闭"的checkbox
。
用户输入09:00
的打开时间,然后使用Text Watcher
添加一个空格和一个破折号,用户输入关闭时间19:00
,以便在最后时间09:00 - 19:00
。
例如,如果商店在星期六关闭,则用户必须单击checkbox
,单击checkbox
时,editText
设置了文本并显示"已关闭"。
问题是当我使用 Text Watcher
,如果长度等于 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 的条件就足够了。