1

設定画面のXML; 1つの設定は「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;
   }
};

編集:またはこれを実装するためのより良い方法はありますか?

4

3 に答える 3

1
 if(preference instanceof EditTextPreference) {
    EditText prefText = ((EditTextPreference) preference).getEditText();
    int type = prefText.getInputType();
    //do stuff
 )

少し変なようですが。あなたは本当に何をしようとしていますか?どれがクリックされたかわかりますか?別のクリックリスナーを割り当てるだけです。

于 2013-01-07T18:25:00.150 に答える
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;
   }
};

コードと上記のスニペットの大きな違いは、それが...

  1. preferenceにキャストEditTextPreference
  2. EditTextからつかむeditTextPreference
  3. EditText一致する入力タイプ( XMLInputType.TYPE_NUMBER_FLAG_DECIMALで対応する)を確認しますandroid:numberDecimal

必要に応じてもっとコンパクトに書くこともできますが、理解しやすいように分解することにしました。:)

于 2013-01-07T18:25:30.230 に答える
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;
   }
};

利用可能なInputTypes:ここ

于 2013-01-07T18:26:45.360 に答える