2012-02-20 25 views
3

的Android電話的setText爲了防止無限循環我一樣醜陋,因爲這東西...內onTextChanged

@Override 
protected void onTextChanged(CharSequence text, int start, 
     int lengthBefore, int lengthAfter) { 

    String t = text.toString(); 
    String tt = t.toUpperCase(); 

    if (!t.equals(tt)) { 

     setText(tt); 
    } 

    super.onTextChanged(text, start, lengthBefore, lengthAfter); 
} 

是否有任何其他方法,以防止不斷變化的內onTextChanged的文本時被調用的onTextChanged

回答

5

您可以使用標誌來指定文本是否已經更改過一次。如果它被更改過一次,那麼不要再改變,否則改變它。

int flag_text=0; 
protected void onTextChanged(CharSequence text, int start, 
    int lengthBefore, int lengthAfter) { 

    if (flag_text==0) { 
     flag_text=1; 
     setText(tt); 
    } 
    super.onTextChanged(text, start, lengthBefore, lengthAfter); 
} 
+1

這就是我通常所做的;這將是很高興看到是否有更優雅的解決方案 – 2012-02-20 07:42:53

+2

猜你的意思是在setText(tt) – BlueWanderer 2012-02-20 10:33:15

+0

之前加上「flag_text = 1」是的你是對的。固定。 – Urban 2012-02-21 04:28:31