Java Android:从addTextChangedListener更改为setOnKeyListener以使用退格
这是我现在的代码:Java Android:从addTextChangedListener更改为setOnKeyListener以使用退格,java,android,Java,Android,这是我现在的代码: txt.addTextChangedListener(新的TextWatcher(){ @凌驾 更改前的公共无效(字符序列p1、int p2、int p3、int p4) { //TODO:实现此方法 } @凌驾 公共void onTextChanged(字符序列p1、int p2、int p3、int p4) { Mymethod1;//显示在TextView中输入的文本 Mymethod2;//一个复杂的方法,它插入一些字符串,如果满足某些条件(条件也取决于之前输入的文本
txt.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(字符序列p1、int p2、int p3、int p4)
{
//TODO:实现此方法
}
@凌驾
公共void onTextChanged(字符序列p1、int p2、int p3、int p4)
{
Mymethod1;//显示在TextView中输入的文本
Mymethod2;//一个复杂的方法,它插入一些字符串,如果满足某些条件(条件也取决于之前输入的文本),则移动文本光标
}
@凌驾
公共无效后文本更改(可编辑p1)
{
//TODO:实现此方法
}
});
如果我描述Mymethod1,它只需获取输入文本,稍作更改并在TextView上显示
而Mymethod2则在edittext中插入一些字符串,并使用以下条件更改文本光标的位置,例如:
RandomText{}MoreRandomText{/code>更改为RandomText{u{}MoreRandomText{cursor is here>}
,因此,如果下划线后面没有花括号,它将插入它们并将光标放在其中。
另外,我使我的方法参数独立于p1、p2、p3、p4参数
我能够正确地实现这一点,它也可以完美地工作,但是当我们使用Backspace删除编辑文本中的文本时,在删除过程中,当{}
出现时,在{}
被删除后,我的方法2开始应用。因为光标仍然放在{}中
,它生成如下内容TextNotBeingDeleted}
more backspaces-->more}
所以我决定像这样使用setOnKeyListener:
txt.setOnKeyListener(新的OnKeyListener(){
@凌驾
公共布尔onKey(视图p1、int p2、KeyEvent p3)
{
if(keyCode==KeyEvent.keyCode_DEL){
Mymethod1;
}
否则{
Mymethod1;
Mymethod2;
}
返回false;
}
});
但这并不能正常工作,只有Mymethod1在使用backspace时执行,而在使用其他键时不会发生任何事情(类似method1的工作方式,2不存在)。
请指导我如何解决这个问题,如果我应该继续使用addTextChangedListener并进行适当的更改(以及如何更改),或者如果我应该更正我的setOnKetListener(以及如何更改)
谢谢所以我想出了一些办法,虽然不是最好的,但我的工作已经完成了
txt.addTextChangedListener(新的TextWatcher(){
长度前的整数=0;
@凌驾
更改前的公共无效(字符序列p1、int p2、int p3、int p4)
{
before_length=txt.getText().length();
}
@凌驾
公共void onTextChanged(字符序列p1、int p2、int p3、int p4)
{
Mymethod1;
如果(在_length之前)这可能对您有所帮助,您可以在onTextChanged last参数中检查计数-