2015-10-02 37 views
-1

我將setOnKeyListener添加到我的Edittext中進行格式化。Edittext setOnKeyListener working

EditText = ₹ 45,000 

鍵之前刪除pressed.I想每個刪除按鍵事件,直到第一個數字(即「4」)。在第一個數字刪除也應該刪除刪除單個數字「₹」從EditText上使其空白我寫下面的代碼,但我必須手動刪除upto₹。

日誌文件:

10-02 18:01:08.360 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 45,000 
10-02 18:01:08.361 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 45000 
10-02 18:01:08.361 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 5 
10-02 18:01:08.488 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 45,00 
10-02 18:01:08.488 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 4500 
10-02 18:01:08.488 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 4 
10-02 18:01:25.297 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 4,500 
10-02 18:01:25.297 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 4500 
10-02 18:01:25.297 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 4 
10-02 18:01:25.472 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 4,50 
10-02 18:01:25.472 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 450 
10-02 18:01:25.472 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 3 
10-02 18:01:27.783 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 450 
10-02 18:01:27.783 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 450 
10-02 18:01:27.783 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 3 
10-02 18:01:28.017 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 45 
10-02 18:01:28.017 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 45 
10-02 18:01:28.017 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 2 
10-02 18:01:41.177 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 45 
10-02 18:01:41.177 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 45 
10-02 18:01:41.177 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 2 
10-02 18:01:41.392 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 4 
10-02 18:01:41.392 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 4 
10-02 18:01:41.392 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 1 
10-02 18:01:56.121 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 4 
10-02 18:01:56.121 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ 4 
10-02 18:01:56.121 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 1 
10-02 18:01:56.336 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 
10-02 18:03:04.153 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 
10-02 18:03:04.327 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 
10-02 18:03:04.327 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ ₹ 
10-02 18:03:04.327 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 1 
10-02 18:03:04.616 4731-4731/loginscreen.example.com.girviapp D/Before Replace =﹕ ₹ 
10-02 18:03:04.616 4731-4731/loginscreen.example.com.girviapp D/After Replace =﹕ ₹ 
10-02 18:03:04.616 4731-4731/loginscreen.example.com.girviapp D/Length =﹕ 1 

代碼:

mAmt.setOnKeyListener(new View.OnKeyListener() 
{ 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       String tmp = mAmt.getText().toString(); 

       if (keyCode == KeyEvent.KEYCODE_DEL) 
       { 

      /* do something */ 
        Log.d("Before Replace = ",tmp); 
        tmp=tmp.replace("\u20B9 ",""); 
        tmp=tmp.replace(" ",""); 
        if (tmp.length() > 0 ) 
        { 
         tmp=tmp.replace("\u20B9 ",""); 
         tmp = tmp.replace(",", ""); 
         Log.d("After Replace = ", tmp.replace("\u20B9 ","")); 
         Log.d("Length = ",String.valueOf(tmp.length())); 
         NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN")); 
         if(tmp.length()>1) 
         { 

          DecimalFormat myFormatter = new DecimalFormat("\u20B9 " + "##,##,##,##,###"); 
          mAmt.setText(myFormatter.format(Integer.parseInt(tmp))); 
          mAmt.setSelection(tmp.length()); 
         } 


        } 

       } 


       mAmt.setSelection(mAmt.getText().length()); 


       return false; 
      } 
     }); 
+0

在'edittext' – Tauqir

+0

但在代碼 –

+0

檢查'mAmt.getText().length()== 3'。返回之前'mAmt.setText(null)'。 – Tauqir

回答

1

嘗試以下:

 mAmt.setOnKeyListener(new View.OnKeyListener() 
     { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       String tmp = mAmt.getText().toString(); 

       if (keyCode == KeyEvent.KEYCODE_DEL) 
       { 

      /* do something */ 
        Log.d("Before Replace = ",tmp); 
        tmp=tmp.replace("\u20B9 ",""); 
        tmp=tmp.replace(" ",""); 
        if (tmp.length() > 0 ) 
        { 
         tmp=tmp.replace("\u20B9 ",""); 
         tmp = tmp.replace(",", ""); 
         Log.d("After Replace = ", tmp.replace("\u20B9 ","")); 
         Log.d("Length = ",String.valueOf(tmp.length())); 
         NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN")); 
         if(tmp.length()>1) 
         { 

          DecimalFormat myFormatter = new DecimalFormat("\u20B9 " + "##,##,##,##,###"); 
          mAmt.setText(myFormatter.format(Integer.parseInt(tmp))); 
          mAmt.setSelection(tmp.length()); 
         } 


        } 

       } 


       mAmt.setSelection(mAmt.getText().length()); 

       if(mAmt.getText().length()==3){ 
        mAmt.setText(null) 
       } 
       return false; 
      } 
     }); 
在第一刪除設置字符串值空