2016-02-02 3 views
0

У меня есть ребята. У меня есть вопросы об edittext.Я создал формат телефона на edittext.Телефонный формат удаляется на edittext в android

Когда я запустил приложение, он работает, но когда я удаляю цифры в edittext, формат удаляется. У вас есть представление, что я могу сделать?

мое изображение: http://hizliresim.com/knd71v

Мой код:

public class MainActivity extends AppCompatActivity implements KeyEvent.Callback { 

    EditText edittext1; 
    String befor="0 _ _ _ - _ _ _ _ _ _ _"; 
    TextView textview; 
    int u,u1,u2,u3,u4,u5,a,u6,u7 ; 
    String store; 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    edittext1=(EditText)findViewById(R.id.editText1); 
    textview=(TextView)findViewById(R.id.textView); 
    edittext1.setText(befor); 
    edittext1.setSelection(1); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 

    //System.out.println(edittext1.length()); 


    edittext1.addTextChangedListener(textWatcher); 



} 

private final TextWatcher textWatcher=new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) 
    { 

    } 

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


    } 

    @Override 
    public void afterTextChanged(Editable s) { 


     if (edittext1.length() == 24) { 

      String ilk=s.toString(); 
      edittext1.setText(ilk.substring(0, 2) + "_ _ - _ _ _ _ _ _ _"); 
      edittext1.setSelection(2); 
      a=1; 
     } else if (edittext1.length() == 22 && a==1) { 

      store = s.toString(); 
      edittext1.setText(store.substring(0, 4) + " - _ _ _ _ _ _ _"); 
      edittext1.setSelection(3); 
      u=4; 



     } else if (edittext1.length() == 21 && u ==4) { 

      store = s.toString(); 
      u=5; 
      edittext1.setText(store.substring(0,4) + " - _ _ _ _ _ _ _"); 
      edittext1.setSelection(6); 
      u1=3; 


     } 
     else if (edittext1.length()==21 && u1==3) { 
      store = s.toString(); 
      edittext1.setText(store.substring(0, 6)+" " + store.substring(6,7) + "_ _ _ _ _ _"); 
      edittext1.setSelection(8); 

      u2=1; 
     } 
     else if (edittext1.length()==20 && u2==1) { 
      store = s.toString(); 
      edittext1.setText(store.substring(0, 9) + "_ _ _ _ _"); 
      edittext1.setSelection(9); 

      u3=1; 
     } 
     else if (edittext1.length()==19 && u3==1) 
     { 
      String store = s.toString(); 
      edittext1.setText(store.substring(0, 10) + "_ _ _ _"); 
      edittext1.setSelection(10); 
      u4=1; 
     } 
     else if (edittext1.length()==18 && u4==1) 
     { 
      store = s.toString(); 
      u4=0; 
      edittext1.setText(store.substring(0, 10)+" " + store.substring(10,11) + "_ _ _"); 
      edittext1.setSelection(12); 
      u5=1; 


     } 


     else if (edittext1.length()==18 && u5==1) 
     { 
      store = s.toString(); 
      edittext1.setText(store.substring(0, 13) + "_ _"); 
      edittext1.setSelection(13); 
      u6=1; 

     } 


     else if (edittext1.length()==17 && u6==1) 
     { 
      String store = s.toString(); 
      u6=2; 
      edittext1.setText(store.substring(0, 13)+ " " + store.substring(13,14) + "_"); 
      edittext1.setSelection(15); 
      u7=1; 

     } 

     else if (edittext1.length() == 17 && u7 == 1) { 
      String store = s.toString(); 
      edittext1.setText(store.substring(0, 16) + ""); 
      edittext1.setSelection(16); 
      } 

     } 
    }; 


    } 
+1

вы должны попробовать класс PhoneNumberUtils и его формат. –

+0

http://www.codota.com/android/scenarios/52c5d288da0a63b7aea97c82/android.telephony.PhoneNumberFormattingTextWatcher?tag=coyote –

ответ

0

Я рекомендую вам использовать Android очень собственный PhoneNumberFormattingTextWatcher. Когда пользователь вводит числа в ваш EditText, он автоматически отформатирует их в стиле номера телефона, который вы ищете.

edittext1.addTextChangedListener(new PhoneNumberFormattingTextWatcher()); 

PhoneNumberFormattingTextWatcher использует этот метод в фоновом режиме:

PhoneNumberUtils.formatNumber(Editable text, int formattingType); 

Тип форматирования автоматически доставляться с телефона пользователя во время построения PhoneNumberFormattingTextWatcher, это означает, что номер телефона форматирования всегда будет правильно страны пользователя. Вы можете видеть из исходного кода Google:

public PhoneNumberFormattingTextWatcher() { 
    this(Locale.getDefault().getCountry()); 
} 

Если вы хотите, чтобы указать конкретный формат для всех пользователей, то вы можете просто использовать второй конструктор:

public PhoneNumberFormattingTextWatcher(String countryCode) { 
    if (countryCode == null) throw new IllegalArgumentException(); 
    mFormatter = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(countryCode); 
} 

Это использует указанный вами код страны и поэтому при добавлении TextChangedListener, необходимо указать в конструкторе:

edittext1.addTextChangedListener(new PhoneNumberFormattingTextWatcher(COUNTRY_CODE)); 

Однако PhoneNumberFormattingTextWatcher также имеет специфические особенности, которые можно посмотреть в этом списке ниже:

int FORMAT_JAPAN  Japanese formatting 
int FORMAT_NANP  NANP formatting 
int FORMAT_UNKNOWN The current locale is unknown, look for a country code or don't format 
+0

http://developer.android.com/intl/es/reference/android/telephony/PhoneNumberFormattingTextWatcher.html –

+0

Могу ли я изменить формат, используемый PhoneNumberFormattingTextWatcer. – kemal

+0

Я исследовал больше и подтвердил, что он будет обновляться в зависимости от текущей страны пользователя. Я снова обновил свой ответ. – edwoollard

Смежные вопросы