2012-04-07 56 views
0

當用戶登錄時,我正在另一個活動中保存兩個字符串,以便我可以保存其數據以使用另一個時間(對於最終用戶而言易用性)。無論如何,我已經設置了代碼並運行它,並且字符串沒有被傳遞。爲了確保,sharedPreferences正在工作,我已經建立了一個敬酒,以查看它是否與我推測的信息相匹配。SharedPreferences不起作用

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(); 
     } 
} 

回答

1

代替:

if(username =="irock97") 

使用:

if(username.equals("irock97")) 

來測試String是否相等。使用==您正在測試對象引用的相等性。

+0

嗨,這仍然沒有顯示舉杯我更新了我的代碼太 – TheBlueCat 2012-04-07 16:28:46

+0

@ user1245593。在你的Toast上調用show()方法來顯示它:Toast.makeText(getApplicationContext(),「yaya」,Toast.LENGTH_SHORT).show();' – Luksprog 2012-04-07 16:31:35

1

替換:

username == "irock97" 

與:

username.equals("irock97") 

==用於檢查2份的引用指的是同一個對象在存儲器中。

equals()用於檢查2個字符串引用是指同一個對象還是2個具有相同字符串值的不同對象。

除此之外,你需要檢查字符串引用不是null第一:

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

編輯:

而且,你忘了打電話給show()方法來顯示吐司:

Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show(); 
+0

嗨,它還沒有顯示吐司。我更新了我的代碼。 – TheBlueCat 2012-04-07 16:28:59

+0

@ user1245593看到編輯。 – 2012-04-07 16:31:08

+0

謝謝!另一個人指出,然後祝酒終於奏效了。 :)再次感謝您的慷慨幫助。先生,祝你有美好的一天。 – TheBlueCat 2012-04-07 16:35:37

1

切記:

==測試參考相等。

等於測試值相等。

所以更改

if(username =="irock97") 

及用途:

if(username.equals("irock97")) 

但要注意空值!

「==」處理空字符串正常,但調用「。等於」從一個空字符串將導致異常:

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(); 
+0

嗨,它還沒有顯示烤麪包。我也更新了我的代碼。 – TheBlueCat 2012-04-07 16:28:33

+0

您需要調用show()來顯示它。 – 2012-04-07 16:33:55

+0

我從來不知道會導致異常,知道有關Java的新規則總是很好。 – TheBlueCat 2012-04-07 16:36:09

相關問題