Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:从addTextChangedListener更改为setOnKeyListener以使用退格_Java_Android - Fatal编程技术网

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参数中检查计数-