0

当用户登录时,我正在为另一个活动保存两个字符串,这样我就可以保存他们的数据以供下次使用(最终用户易于使用)。无论如何,我已经设置了代码并运行它并且字符串没有被传递。为了确保 sharedPreferences 正常工作,我设置了一个 toast,看看它是否与我估算的信息相匹配。

1类:

uname = (EditText) findViewById(R.id.txt_username);
        String username = uname.getText().toString();

        pword = (EditText) findViewById(R.id.txt_password);
        String password = pword.getText().toString();

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString("key1", username);
        editor.putString("key2", password);
        editor.commit();

第二类:

private void Test() {
        // TODO Auto-generated method stub
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        String username = settings.getString("key1", null);
        String password = settings.getString("key2", null);
         if(username.equals("irock97")) {
            Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
        }
}
4

3 回答 3

1

代替 :

if(username =="irock97")

采用:

if(username.equals("irock97"))

来测试是否String相等。与==您一起测试对象引用相等性。

于 2012-04-07T16:19:21.287 回答
1

代替:

username == "irock97"

和:

username.equals("irock97")

==用于检查 2 个字符串引用是否引用了内存中的同一对象。

equals()用于检查 2 个字符串引用是否引用相同的对象或 2 个具有相同字符串值的不同对象。

除此之外,您需要检查字符串引用是否不是null第一个:

if(username != null && username.equals("irock97"))

编辑:

此外,您忘记调用show()方法来显示 Toast:

Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show();
于 2012-04-07T16:20:03.423 回答
1

记住:

== 测试引用相等性。

equals 测试值相等。

所以改变

if(username =="irock97")

并使用:

if(username.equals("irock97")) 

但要注意空值!

"==" 可以很好地处理空字符串,但是从空字符串调用 ".equals" 会导致异常:

String s1 = null;
String s2 = null;

s1 == s2; // ok, it's true
s1.equals(s2); // throws an exception !

编辑:你需要打电话show()

Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show();
于 2012-04-07T16:20:07.543 回答