libPhoneNumber没有在edittext上给出正确的美国结果

时间:2017-01-11 08:41:02

标签: android libphonenumber

我正在尝试使用正确显示电话号码的文本观察器创建编辑文本,开始我只是使用美国号码进行测试。

如果我去这个网站 http://libphonenumber.appspot.com/ 并输入美国和数字9188143287,结果看起来很完美但是当我实施该库时,他们说我得到了不同的结果

这是我的片段

ublic class PhoneNumberFragment extends Fragment{

private TextView next;
private EditText phoneNumber;
private PhoneNumberUtil phoneUtil;
private AsYouTypeFormatter formatter;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_phone_number, container, false);
    phoneUtil = PhoneNumberUtil.getInstance();
    formatter = phoneUtil.getAsYouTypeFormatter("US");



    init(v);



    return v;
}
private void init(View v){
    next = (TextView) v.findViewById(R.id.next);
    phoneNumber = (EditText) v.findViewById(R.id.phoneNumber);

    phoneNumber.addTextChangedListener(new PhoneNumberTextWatcher());




}

private void turnOnNext(){
    next.setBackgroundResource(R.color.warningRed);
}

private class PhoneNumberTextWatcher implements TextWatcher{

    private boolean isFormatting = false;


    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                                  int after) {
        // TODO: implement your code
    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO: implement your code
    }


    @Override
    public synchronized void onTextChanged(CharSequence s, int start, int before,
                                           int count) {
        if(before > count) {
            return;
        }


        if(!isFormatting) {
            isFormatting = true;
            try {
                formatter.clear();
                for(int i=0; i<s.length();i++) {
                    phoneNumber.setText(formatter.inputDigit(s.charAt(i)));
                    phoneNumber.setSelection(phoneNumber.getText().length());
                }

            } catch (Exception e) {}
            isFormatting = false;
        }
    }

}

}

我的结果是正确的,最多7位数,但是在第8位数字上,括号应该出现在前3位左右,而它们则没有。

感谢您的帮助!

enter image description here

enter image description here

enter image description here

enter image description here

0 个答案:

没有答案