Как проверить правильность введенного пользователем года в Android EditTextPreference? - PullRequest
2 голосов
/ 20 марта 2011

У меня есть следующие предпочтения EditText

    <EditTextPreference android:key="pref_movies_min_year"
        android:title="@string/pref_movies_min_year" 
        android:summary="@string/pref_movies_min_year_summary"
        android:defaultValue="1950"/>

Мне нужно проверить, что у пользователя введен действительный год (т. Е. Это числовое значение, 4 цифры, между 1900 и текущим годом). Идеально делать это, когда пользователь меняет настройки.

Как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 20 марта 2011

Вы можете использовать свойство XML inputType и установить его в числовое значение.Затем объедините это с InputFilter , чтобы предотвратить переход более 4 символов.К сожалению, я думаю, что вам все равно придется реализовать прослушиватель, чтобы подтвердить, что он ровно 4 символа.

Код:

<EditTextPreference android:key="pref_movies_min_year"
        android:title="@string/pref_movies_min_year" 
        android:summary="@string/pref_movies_min_year_summary"
        android:defaultValue="1950"
        android:inputType="number"
        android:maxLength="4"
    />
2 голосов
/ 20 марта 2011

Вы можете реализовать OnSharedPreferenceChangeListener, чтобы проверить и сообщить пользователю, что он указал неверное значение.

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.setOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        if(key.equals("year") {
           // check if a valid year and let the user know if it isn't.
        }
    }
});
0 голосов
/ 06 июня 2017

String year = eyear.getText (). ToString (); if (! year.subSequence (0, 2) .equals ("19") || year.length ()! = 4) {

                LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
                        .getSystemService(LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.helppop, null);
                final PopupWindow popupWindow = new PopupWindow(popupView,
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

                ImageButton img = (ImageButton) popupView
                        .findViewById(R.id.imageButton1);
                img.setBackground(getResources()
                        .getDrawable(R.drawable.warning));
                TextView txt = (TextView) popupView.findViewById(R.id.helptxt);
                txt.setText("the year you entert is incorret");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...