Android 如何设置PhoneNumberFormattingTextWatcher';kitkat的地区是什么?
我想设置PhoneNumberFormattingTextWatcher的区域设置 但在kitkat中,不能使用PhoneNumberFormattingTextWatcher(字符串countryCode)构造函数 所以我尝试使用反射。像这样Android 如何设置PhoneNumberFormattingTextWatcher';kitkat的地区是什么?,android,android-4.4-kitkat,Android,Android 4.4 Kitkat,我想设置PhoneNumberFormattingTextWatcher的区域设置 但在kitkat中,不能使用PhoneNumberFormattingTextWatcher(字符串countryCode)构造函数 所以我尝试使用反射。像这样 phoneNumberFormattingTextWatcher = new phoneNumberFormattingTextWatcher(); Field mFormatter = PhoneNumberFormattingTextWatcher
phoneNumberFormattingTextWatcher = new phoneNumberFormattingTextWatcher();
Field mFormatter = PhoneNumberFormattingTextWatcher.class.getDeclaredField("mFormatter");
mFormatter.setAccessible(true);
mFormatter.set(phoneNumberFormattingTextWatcher,
PhoneNumberUtil.getInstance().getAsYouTypeFormatter(COUNTRY_ISO));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher("US"));
}else {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
}
但是mFormatter.set()方法抛出IllegalArgumentException
我怎样才能修好它
编译'com.googlecode.libphonenumber:libphonenumber:7.2.2'
build.gradle(应用程序)电话号码FormattingTextWatcher的mFormatter是
但是我注入了com.google.i18n.phonenumbers.asyutypeformatter类的实例。T T电话号码格式文本观察者的M格式是
但是我注入了com.google.i18n.phonenumbers.asyutypeformatter类的实例。T TmPhoneText.addTextChangedListener(新电话号码格式为TextWatcher()) 这不适用于21或更高版本的api。所以您应该像这样包装在api lvl条件中
phoneNumberFormattingTextWatcher = new phoneNumberFormattingTextWatcher();
Field mFormatter = PhoneNumberFormattingTextWatcher.class.getDeclaredField("mFormatter");
mFormatter.setAccessible(true);
mFormatter.set(phoneNumberFormattingTextWatcher,
PhoneNumberUtil.getInstance().getAsYouTypeFormatter(COUNTRY_ISO));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher("US"));
}else {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
}
不要忘记设置inputType=“phone”
这是您只能为更高的API设置语言环境的方式。mPhoneText.addTextChangedListener(新的PhoneNumberFormattingTextWatcher()) 这不适用于21或更高版本的api。所以您应该像这样包装在api lvl条件中
phoneNumberFormattingTextWatcher = new phoneNumberFormattingTextWatcher();
Field mFormatter = PhoneNumberFormattingTextWatcher.class.getDeclaredField("mFormatter");
mFormatter.setAccessible(true);
mFormatter.set(phoneNumberFormattingTextWatcher,
PhoneNumberUtil.getInstance().getAsYouTypeFormatter(COUNTRY_ISO));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher("US"));
}else {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
}
不要忘记设置inputType=“phone”
这就是您可以仅为更高的API设置语言环境的方式。看起来更容易访问接受该
字符串的隐藏构造函数:不知道为什么它会被隐藏。访问隐藏构造函数。。那是个好主意。我试试看!看起来更容易访问接受该字符串的隐藏构造函数:不知道它为什么会隐藏。访问隐藏构造函数。。那是个好主意。我试试看!我想在其他情况下使用PhoneNumberFormattingTextWatcher(“US”)(在棒棒糖下)。我已经用过(Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.LOLLIPOP)这个例子了。。低版本是不可能的。。但你们可以使用不同的库,我想在其他情况下使用PhoneNumberFormattingTextWatcher(“US”)(在棒棒糖下)。我已经用过(Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.LOLLIPOP)这个例子了。。低版本是不可能的。。但是你可以使用不同的库来实现这一点。