2016-11-04 2 views
0

Когда я ввожу значение в EditText, я не могу сравнивать его со значением в My SharedPreference.Невозможно сравнить значение EditText с значением SharedPreference

Это мой EditText Предпочтение

<EditTextPreference 

     android:defaultValue="1234" 
     android:inputType="number" 
     android:key="userid" 
     android:maxLength="4" 
     android:singleLine="true" 
     android:summary="To Access App setting set a PIN" 
     android:title="Set PIN" /> 

И это мой Methode код:

private void GoToSettings(){ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplication()); 
    String userpin = prefs.getString("userid", ""); 
    String userpin1 = txtpin.getText().toString(); 
    if(userpin.equals(userpin1)){ 
         /*Intent intent = new Intent(FingerprintScannerActivity.this, PreferencesActivity.class); 
         startActivity(intent);*/ 
     Toast.makeText(getApplicationContext(), 
       "Good", 
       Toast.LENGTH_SHORT).show(); 
    }else Toast.makeText(getApplicationContext(), 
      "Error PIN", 
      Toast.LENGTH_SHORT).show(); 

} 
+0

Решено: Я забыл загрузить PreferenceManager.setDefaultValues ​​(это, R.xml.preferences_xml, false); –

ответ

0
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplication()); 
String userpin = prefs.getString("userid", ""); 

изменения его: String userpin = prefs.getString("userid", null); его более эффективно возвращать нуль вместо пустой строки, а затем вы можете использовать:

if((userpin == null) ? (userpin1 == null) : userpin.equalsIgnoreCase(userpin1)) 
+0

Ошибка PIN-кода появляется снова: s: s –

+0

@YsenEycen это не значит, что сравнение было worng. напечатайте здесь значение значения 'userid' в sharedPref 'Log.d (TAG, userpin +" "userpin1);' – Lior

+0

Код работает только тогда, когда я открываю активность настройки и устанавливаю значение в файле editText, иначе без открытия кода настройки активности dosn't work –

0

Всякий раз, когда сравнение Strings использовать следующий подход

string1.equals(string2)

Не используйте Оператор '==' для строк
Смотрите это более подробный ответ Java String.equals versus ==

+0

Та же проблема, Когда я нажимаю кнопку, появляется сообщение в инструкции else –

Смежные вопросы