Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 共享数据引用不起作用_Java_Android_String_Sharedpreferences - Fatal编程技术网

Java 共享数据引用不起作用

Java 共享数据引用不起作用,java,android,string,sharedpreferences,Java,Android,String,Sharedpreferences,当用户登录时,我正在为另一个活动保存两个字符串,这样我就可以保存他们的数据以便下次使用(方便最终用户使用)。无论如何,我已经设置了代码并运行了它,字符串没有被传递。为了确保SharedReferences有效,我设置了一个祝酒词,看看它是否与我输入的信息匹配 1类: uname = (EditText) findViewById(R.id.txt_username); String username = uname.getText().toString(); p

当用户登录时,我正在为另一个活动保存两个字符串,这样我就可以保存他们的数据以便下次使用(方便最终用户使用)。无论如何,我已经设置了代码并运行了它,字符串没有被传递。为了确保SharedReferences有效,我设置了一个祝酒词,看看它是否与我输入的信息匹配

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();
        }
}
而不是:

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()嗨,它仍然没有显示祝酒词。我也更新了我的代码。谢谢!另一个人指出了这一点,然后祝酒词终于起作用了再次感谢你的慷慨帮助。祝您一天愉快,先生。嗨,这里还没有祝酒呢。我也更新了我的代码。谢谢!另一个人指出了这一点,然后祝酒词终于起作用了再次感谢你的慷慨帮助。祝您愉快,先生。