Java 共享数据引用不起作用
当用户登录时,我正在为另一个活动保存两个字符串,这样我就可以保存他们的数据以便下次使用(方便最终用户使用)。无论如何,我已经设置了代码并运行了它,字符串没有被传递。为了确保SharedReferences有效,我设置了一个祝酒词,看看它是否与我输入的信息匹配 1类:Java 共享数据引用不起作用,java,android,string,sharedpreferences,Java,Android,String,Sharedpreferences,当用户登录时,我正在为另一个活动保存两个字符串,这样我就可以保存他们的数据以便下次使用(方便最终用户使用)。无论如何,我已经设置了代码并运行了它,字符串没有被传递。为了确保SharedReferences有效,我设置了一个祝酒词,看看它是否与我输入的信息匹配 1类: uname = (EditText) findViewById(R.id.txt_username); String username = uname.getText().toString(); p
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();
}
}
而不是:
if(username =="irock97")
使用:
测试字符串是否相等。使用==
测试对象引用相等性。而不是:
if(username =="irock97")
使用:
测试字符串是否相等。使用==
测试对象引用相等性。替换:
username == "irock97"
与:
=
用于检查两个字符串引用是否引用内存中的同一对象
equals()
用于检查两个字符串引用是指同一个对象还是指具有相同字符串值的两个不同对象
除此之外,您需要首先检查字符串引用是否不是null
:
if(username != null && username.equals("irock97"))
编辑:
另外,您忘记调用show()
方法来显示土司:
Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show();
替换:
username == "irock97"
与:
=
用于检查两个字符串引用是否引用内存中的同一对象
equals()
用于检查两个字符串引用是指同一个对象还是指具有相同字符串值的两个不同对象
除此之外,您需要首先检查字符串引用是否不是null
:
if(username != null && username.equals("irock97"))
编辑:
另外,您忘记调用show()
方法来显示土司:
Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show();
记住:
==参考等式测试
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()
记住:
==参考等式测试
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()
嗨,它还没有展示祝酒词。我也更新了我的代码。我从来不知道这会导致异常,了解Java的新规则总是很好的。@user1245593如果s1
为空,则不能从中调用方法。您好,它仍然没有显示toast。我也更新了我的代码。我从来不知道这会导致异常,了解Java的新规则总是很好的。@user1245593如果s1
为空,则不能从中调用方法。您好,它仍然没有显示toast。我也更新了我的代码。@user1245593调用Toast
上的方法show()
来实际显示它:Toast.makeText(getApplicationContext(),“yaya”,Toast.LENGTH\u SHORT).show()代码>嗨,它仍然没有显示祝酒词。我也更新了我的代码。@user1245593调用Toast
上的方法show()
来实际显示它:Toast.makeText(getApplicationContext(),“yaya”,Toast.LENGTH\u SHORT).show()代码>嗨,它仍然没有显示祝酒词。我也更新了我的代码。谢谢!另一个人指出了这一点,然后祝酒词终于起作用了再次感谢你的慷慨帮助。祝您一天愉快,先生。嗨,这里还没有祝酒呢。我也更新了我的代码。谢谢!另一个人指出了这一点,然后祝酒词终于起作用了再次感谢你的慷慨帮助。祝您愉快,先生。