无法将EditText值与SharedPreference值进行比较

时间:2016-11-04 20:26:52

标签: android sharedpreferences

当我在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();

}

2 个答案:

答案 0 :(得分:0)

每当比较Strings时,请使用以下方法

string1.equals(string2)

不要对字符串使用'=='运算符 有关详细解答Java String.equals versus ==

,请参阅此处

答案 1 :(得分:0)

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

将其更改为:String userpin = prefs.getString("userid", null); 返回null而不是空字符串更有效,然后你可以使用:

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