android textwatcher 延时,Java-防止两次在android的textwatcher中运行

博主在博客中描述了一个Android编程问题,涉及到EditText和TextWatcher的使用。用户输入时,代码需要保存输入内容并在EditText中实时显示特定效果。当用户输入非'a'字符时,字符被保存,同时EditText显示该字符加'a'在末尾;输入'a'时,只保存'a'。然而,由于TextWatcher的触发机制,导致输入的字符被多次添加,产生了意料之外的结果。博主寻求解决方案以确保只有用户直接按下'a'键时,才会在保存的字符串中添加'a'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

即时通讯与android的TextWatcher一起执行此操作:用户输入时,保存键入的内容,保存后,在Edittext中更改字符.例如,我有一个常量文本,例如“ hi im happy”,并且我在edittext用户中键入的所有内容都看到该文本正在编写(该字符串在用户键入时显示Tandemly)!但用户键入的主要文本存储在变量中.我在afterTextChanged内部使用此代码:

if(s.toString().charAt(s.length()-1) != 'a'){

//save inside freaktext variable(append)

freaktext=freaktext+s.toString().charAt(s.length()-1);

//change edittext value(what user see's)

txtfreak.setText(s.toString().substring(0, s.length()-1) + "a");

txtfreak.setSelection(txtfreak.getText().length());

}else{

freaktext=freaktext+"a";

}

我在这段代码中说,如果键入的字符不是“ a”,则将其保存在名为“ freaktext”的变量中,然后更改edittext值,并将“ a”字符放在edittext中字符串的末尾.但是如果用户键入“ a”,则将其保存为freaktext.

但我的问题是:当用户键入一个无“ a”字符时,一切正常,我的代码保存键入的字符,然后修改edittext值,但是当edittext值更改时,整个代码将再次运行,因为上次我更改了该代码并放置了“到它的“ a”,我的代码的第二部分(其他)运行,然后再次将“ a”保存到保存的字符串的末尾.实际上,当我输入“ q”时,我在保存的字符串中看到了“ qa”!我希望只是用户直接在键盘上键入“ a”,保存“ a”,而在其他情况下则不这样.我实际上我的else部分仅在用户直接按键盘上的“ a”键时运行.我该怎么做?请帮助我,这段代码浪费了我1天的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值