首选项屏幕XML;请注意,一个首选项是“numberDecimal”。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference
android:inputType="textCapWords"
android:key="tsName"
android:title="@string/pref_common_test_name_title" />
<EditTextPreference
android:inputType="numberDecimal"
android:key="tsSledWeightValue"
android:title="@string/pref_cof_test_sled_weight" />
</PreferenceScreen>
Preference onClick方法:现在我想确定该首选项的输入类型是否为“numberDecimal”,因为我想调用自定义编辑器。
private static Preference.OnPreferenceClickListener sBindEditorToPreferenceClickListener = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
boolean isHandled = false;
if (preference instanceof EditTextPreference) {
// ******* CAN I FIND THE PREFERENCE'S "inputType" HERE?
// ******* EXAMPLE: if(preference.inputType == android:numberDecimal) {}
}
return isHandled;
}
};
编辑:或者有更好的方法来实现这个吗?
答案 0 :(得分:1)
if(preference instanceof EditTextPreference) {
EditText prefText = ((EditTextPreference) preference).getEditText();
int type = prefText.getInputType();
//do stuff
)
虽然看起来有点奇怪。你真的想做什么?找出哪一个被点击了?只需分配不同的点击监听器。
答案 1 :(得分:1)
你可能会这样做:
private static Preference.OnPreferenceClickListener sBindEditorToPreferenceClickListener = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
boolean isHandled = false;
if (preference instanceof EditTextPreference) {
EditTextPreference editTextPreference = (EditTextPreference) preference;
EditText editText = editTextPreference.getEditText();
if( editText.getInputType() == InputType.TYPE_NUMBER_FLAG_DECIMAL ) {
/**********************
Do your thing here
**********************/
isHandled = true;
}
}
return isHandled;
}
};
您的代码和上面的代码段之间的最大区别在于它的......
preference
投射到EditTextPreference
EditText
editTextPreference
EditText
的输入类型与InputType.TYPE_NUMBER_FLAG_DECIMAL
匹配(对应于XML中的android:numberDecimal
)如果你想要的话,你可能会写得更紧凑,但我选择将其分解,以便更容易理解。 :)
答案 2 :(得分:0)
你应该这样做:
private static Preference.OnPreferenceClickListener sBindEditorToPreferenceClickListener = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
boolean isHandled = false;
if (preference instanceof EditTextPreference) {
if (((EditTextPreference)preference).getEditText().getInputType()==InputType.TYPE_NUMBER_FLAG_DECIMAL)
{}
}
return isHandled;
}
};
可用的输入类型:here