Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged

hlasů
97

Za jakých okolností bych měl použít afterTextChangedmísto onTextChangeda naopak? Příkladem by bylo velmi poučné s důrazem na důvod, proč onTextChangedmusí být přepsána, ale afterTextChangedi beforeTextChangednemusejí být přepsána.

Položena 25/01/2009 v 00:03
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
160

Tyto události jsou nazývány v následujícím pořadí:

  1. beforeTextChanged (CharSequence s, počáteční int, int count, int po) .
    To znamená, že znaky jsou asi být nahrazen nějakým novým textem. Text je nelze upravovat.
    Použití: když je potřeba se podívat na starého textu, který se chystá změnit.

  2. onTextChanged (CharSequence s, int start, int před, int count) .
    Změny byly provedeny některé znaky byly právě vyměnit. Text je nelze upravovat.
    Použití: když je potřeba zjistit, které znaky v textu jsou nové.

  3. afterTextChanged (editovatelné y) .
    Stejně jako výše, s výjimkou nyní text je upravitelný .
    Použití: když je třeba vidět a případně upravit nový text.

Když jsem jen poslouchal změn EditText, nebudu muset použít prvních dvou způsobů vůbec. Budu jen přijímat nové hodnoty ve třetím způsobu a správné novým textem v případě potřeby. Nicméně, kdybych měl vypátrat přesné změny, které se dějí na hodnoty, tak bych použít první dvě metody. Kdybych měl také třeba upravit text po poslechu na změny, udělal bych, že ve třetím způsobu.

Odpovězeno 14/05/2011 v 19:03
zdroj uživatelem

hlasů
10

public void afterTextChanged (editovatelné s)

Tato metoda se nazývá, aby vás upozornil, že někde uvnitř s, text byl změněn. Je legitimní, aby se další změny sz této zpětné volání, ale dávejte pozor, aby ses do nekonečné smyčky, protože všechny provedené změny způsobí, že tato metoda se nazývá opět rekurzivně. (Nejste řečeno, kde se změna proběhla, protože ostatní afterTextChanged () metody mohou již učinili další změny a zrušena offsety. Ale pokud potřebujete vědět zde můžete použít setSpan(Object, int, int, int)ve onTextChanged(CharSequence, int, int, int)označit místo, a pak se podívejte odsud, kde rozpětí skončil.

public void beforeTextChanged (CharSequence s, int start, int count, int po)

Tato metoda se nazývá, aby vás upozornil, že v rámci sjsou countznaky začínající na startChystáte se nahrazuje novým textem o délce after. Je chybou pokoušet se provádět změny sz této zpětné volání.

public void onTextChanged (CharSequence s, int start, int před, int count)

Tato metoda se nazývá, aby vás upozornil, že v rámci sjsou countznaky začínající v startprávě vyměnili starý text, který měl délku before. Je chybou pokoušet se provádět změny sz této zpětné volání.

Přímo z Android Reference TextWatcher .

Odpovězeno 25/01/2009 v 00:19
zdroj uživatelem

hlasů
2

Android Textwatcher je jeden druh spouště, která se nazývá na textovou změnu vstupního pole.

Text Watcher má tři události.

afterTextChanged (Editable s)- Tato metoda je volána, když byl změněn text. Vzhledem k tomu, všechny změny, které způsobí, že tato metoda se nazývá opět rekurzivně, musíte být bdělí o provádění operací zde, v opačném případě by to mohlo vést k nekonečné smyčce .

beforeTextChanged (CharSequence s, int start, int count, int after)- Tato metoda se nazývá, aby vás upozornil, že v rámci sekund, počet znaků začínající na začátku se chystají být nahrazena novým zněním s délkou po. Je chybou pokoušet se provádět změny s z tohoto zpětného volání.

onTextChanged (CharSequence s, int start, int before, int count)- Tato metoda se nazývá, aby vás upozornil, že v rámci sekund, počet znaků začínající na začátku právě vyměnili starý text, který měl délku předtím. Je chybou pokoušet se provádět změny s z tohoto zpětného volání.

Pro lepší informace je možné navštívit zde

http://developer.android.com/reference/android/text/TextWatcher.html

Odpovězeno 05/06/2015 v 09:55
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more