2017-12-11 14 views
0

このコードを使用して、3番目と4番目の数字の後に電話番号にダッシュ( ' - ')を追加します。コードは正常に動作しています。私の問題は、バックスペースを押すとダッシュを取り除くことができないということです。バックスペースを押すとドットを追加して削除することもできますが、ダッシュでは不可能です。番号から数字以外の文字を削除するeditText

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     MainActivity.headerName.setText("Verification"); 
     phoneNumber = (EditText) getActivity().findViewById(R.id.phoneEditText); 
     int grup = 1; 

     phoneNumber.addTextChangedListener(new TextWatcher() { 

      int keyDel; 
      String a= phoneNumber.getText().toString(); 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

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

      phoneNumber.setOnKeyListener(new View.OnKeyListener() { 
       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 

        if (keyCode == KEYCODE_DEL) { 
         a = a.replace("-" , ""); 
         phoneNumber.setText(a); 

         keyDel = 1; 
        } 
        return false; 
       } 
      }); 

      if (keyDel == 0) { 
       int len = phoneNumber.getText().length(); 
       if(len == 3 || len == 7) { 
        phoneNumber.setText(phoneNumber.getText() + "-"); 
       phoneNumber.setSelection(phoneNumber.getText().length()); 
       } 
      } else { 
       if(KeyEvent.isModifierKey(KEYCODE_DEL)) { 
        a = a.replace("-" , ""); 
        phoneNumber.getText().toString().replace("-" , ""); 
        phoneNumber.setText(a); 
       } 
       keyDel = 0; 
      } 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 
} 

答えて

0

あなたのUIウィジェットがテキストをフォーマットしていると思います。したがって、ハイフンを削除すると、ウィジェットはそれを元に戻します。

ウィジェットをそのままにすることをお勧めします。代わりに、電話番号を使用する必要がある場合は、値から書式設定文字を削除します。

String.replaceAll("[^\\d]", "") 

このコードは、外部使用のためにウィジェットから値を取得するときに使用します。したがって、メソッドがあるかもしれません。

public String getPhoneNumberUnformatted() {...} 

これは、ウィジェットの値の桁のみを返します。

+0

このコードはどこに挿入しますか?私はaldeadyが "onKey"関数の内側とif-elseの内部で試してみました。動いていない。 –

関連する問題