2016-11-04 48 views
0

比較的EditText值當我在EditText上輸入一個值,我不能把它與我的SharedPreference一個值進行比較。不能與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(this,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再次出現:■:■ –

+0

@YsenEycen它不意味着比較是撥錯。 打印在這裏sharedPref 'Log.d的「用戶ID」值(TAG,userpin +「」 userpin1)的價值;只有' – Lior

+0

代碼工作時,我打開設置活動,我設置的EDITTEXT的價值,否則無需打開設置活動代碼不到風度工作 –

0

每當比較Strings用下面的辦法

string1.equals(string2)

不要使用字符串的'=='運算符 更詳細的解答Java String.equals versus ==

+0

同樣的問題,當我點擊按鈕的消息出現在其他指令錯誤 –