即時通訊工作與android的TextWatcher做到這一點:當用戶鍵入,保存什麼類型和保存後,改變Edittext內的字符。例如,我有一個像「hi hi happy」這樣的常量文本,並且我在edittext用戶中輸入的每個內容都會看到該文本正在寫入(此字符串在用戶輸入時顯示爲Tandemly)!但用戶鍵入的主要文本存儲在一個變量中。我用這個代碼裏面afterTextChanged:阻止在android的textwatcher兩次運行
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值,並把「一」字edittext中的字符串結尾。但如果用戶鍵入「a」,只需將其保存在freaktext中即可。
我的問題是:當用戶輸入一個沒有「a」字符時,一切正常,我的代碼保存輸入字符,然後修改edittext值,但是當edittext值更改整個代碼再次運行,因爲上次我改變它並放上一個「a」,我的代碼的第二部分(else)運行並再次保存「a」到保存的字符串的末尾。事實上,當我輸入「q」時,我在保存的字符串中看到「qa」!我希望那個用戶直接在鍵盤上鍵入「a」,「a」保存並且在其他情況下不會。事實上,我的其他部分只在用戶直接按下鍵盤上的「a」鍵時運行。我可以這樣做嗎?請幫幫我,這個代碼浪費我的時間1天
哇!謝謝。我嘗試了幾次這種方法,但每次我有一個問題,從來沒有我的代碼是美麗的,格式良好。但你的代碼工作正常,我想感謝你我的朋友! :) – Fcoder 2013-03-28 06:21:13