2012-09-06 39 views
0

我有一個EditText輸入數字。EditText不超過x十進制android

我想要的是禁止此數字具有多於「x」的小數位數,例如三位。

我試圖用聽衆做,但我不準確地找到解決方案.......

precioProducto.addTextChangedListener(new TextWatcher(){ 
       public void afterTextChanged(Editable s) { 

       } 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
        String[] numeroDecimal = s.toString().split(","); 
        if(numeroDecimal[1].length()==3){ 

        } 
       } 
      }); 

我怎麼能「鎖定」的EditText將超過3位小數

非常感謝。


我試了一下維奈瓦德華告訴我,而是試圖一點點後等,有時(不everytimes),應用程序中斷給我的下一個日誌:

十一月9日至七日E/AndroidRuntime(14586):java.lang.StackOverflowError 09-07 11:37:32.119:E/AndroidRuntime(14586):致命例外:main 09-07 11:37:32.119: AndroidRuntime(14586):在android.text.method.ReplacementTransformationMethod $ ReplacementCharSequence.getChars(ReplacementTransformationMethod.java:151) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.text.TextUtils.getChars(TextUtils.java:70) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.text.TextUtils.indexOf(TextUtils.java:103) 09- 07 11:37:32.119:E/AndroidRuntime(14586):在android.text.StaticLayout.generate(StaticLayout.java:182) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.text .DynamicLayout.reflow(DynamicLayout.java:283) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.text.DynamicLayout。(DynamicLayout.java:169) 09-07 11:37: 32.119:E/AndroidRuntime(14586):在android.widget.TextView.makeSingleLayout(TextView.java:6318) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.makeNewLayout TextView.java:6216) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.checkForRelayout(TextVie E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3306) 09-07 11:37:32.119:E/AndroidRuntime(14586) AndroidRuntime(14586):在android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.EditText.setText(EditText.java: 78) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586) :at es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.sendOnTextChanged(TextView.java:7634 ) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3309) 09-07 11 :37/32.119:E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.EditText .setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3137) 09-07 11:37:32.119 :E/AndroidRuntime(14586):在es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView。 sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119: E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32。119:E/AndroidRuntime(14586):在android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):at es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11:37:32.119 :E/AndroidRuntime(14586):在android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView .java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime (14586):在android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextVie w.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):at es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11 :37/32.119:E/AndroidRuntime(14586):在android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView .setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119 :E/AndroidRuntime(14586):在android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView .java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):at es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget。 TextView.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):at es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11 :37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119: E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView。 java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119:E/AndroidRuntime 14586):at android.widget.TextView.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):在es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java :686) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586) ):在android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView。 setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.EditText.setText(EditText.java:78) 09-07 11:37:32.119: E/AndroidRuntime(14586):在android.widget.TextView.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime(14586):在es.wul4.zarko.CrearPedidos $ 25.onTextChanged (CrearPedidos.java:686) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.sendOnTextChanged(TextView.java:7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java :3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.EditText.setText(EditText。java:78) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3137) 09-07 11:37:32.119:E/AndroidRuntime 14586):在es.wul4.zarko.CrearPedidos $ 25.onTextChanged(CrearPedidos.java:686) 09-07 11:37:32.119:E/AndroidRuntime(14586):在android.widget.TextView.sendOnTextChanged(TextView.java :7634) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.TextView.setText(TextView.java:3309) 09-07 11:37:32.119:E/AndroidRuntime(14586) ):at android.widget.TextView.setText(TextView.java:3162) 09-07 11:37:32.119:E/AndroidRuntime(14586):at android.widget.EditText.setText(EditText.java:

我不知道爲什麼給我這個問題,甚至不是每次都......只是有時在「觸摸」太多次內部文本後

回答

1

添加一個類變量存儲編輯文本的最後一個前值

String lastVal

precioProducto.addTextChangedListener(new TextWatcher(){ 
        public void afterTextChanged(Editable s) { 

        } 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

        } 
        public void onTextChanged(CharSequence s, int start, int before, int count) {      

         String[] numeroDecimal = s.toString().split(","); 
         if(numeroDecimal[1].length()>=3){ 
          precioProducto.setText(lastVal); 
         } 
         lastVal=s.toString(); 
        } 
       }); 
+0

這正是我一直在尋找的解決方案!非常感謝! – zapotec

0

請在XML文件的EditText中添加下面的內容。

android:maxLength="3" 
+0

我知道that's禁止有3名以上的字符數,但它不禁止它有超過3位小數(這樣我就不能寫「1000」,這是一個沒有任何小數的數字)。不管怎麼說,還是要謝謝你! – zapotec