我的應用程序中有幾個不同的用戶。有些關鍵字與這些用戶根據他們的選擇相關聯,我想讓他們這樣,當他登錄同一設備時,用戶2的k選定關鍵字不會顯示給用戶2。 這裏是基本的代碼:如何分隔2個不同用戶的關鍵字?
Boolean firstuserlogin= Sharedpreferences.getinstance().firstlogin;
Boolean sameuserlogin = !Sharedpreferences.getinstance().differentuser;
Boolean differentuserlogin = Sharedpreferences.getinstance().differentuser;
if(firstuserlogin && differentuserlogin) {
//Please note: firsttime user is also considered a new/different user
m_keyword = Sharedpreferences.getinstance().getkeyword1();
}else if(sameuserlogin){
m_keyword = Sharedpreferences.getinstance().getkeyword1();
}else if(differentuser){
m_keyword = Sharedpreferences.getinstance().getkeyword2();
}else{
m_keyword = Sharedpreferences.getinstance().getkeyword1();
}
的問題是我沒有能夠得到它的expected.Theoretically工作:假設用戶1個登錄時,他首先考慮的用戶,並在同一時間,新的/不同用戶,直到他註銷。他在會話期間選擇的關鍵字設置按預期保存。現在,說他註銷並再次登錄,他應該能夠看到他的關鍵字設置,並且自從他登錄之前就被視爲「相同用戶」,除非其他用戶使用不同的id登錄到同一設備上,在這種情況下,它應該顯示所有新的默認關鍵字(在這種情況下可以說關鍵字2),並且不應該顯示以前的用戶選擇。目前基於上述邏輯,我實現了它似乎失靈,有時它工作,有時它不會將用戶識別爲不同的用戶,而是將相同的用戶和VICE VERSA識別出來。有沒有更好更緊湊的方式來限制和實現這個邏輯?
謝謝!
我也在想,也許我可以添加一個變量,可以確保firsttimeuser變得相同用戶?和不同的用戶後,成爲另一個用戶,任何想法如何去? – 2014-10-10 10:49:35
有了分隔符和用戶標識符,你將能夠識別誰e用戶是。比方說,用戶1的暱稱是暱稱1,分隔符##(綽號中不太可能用到的組合),關鍵字是carSelection。所以當用戶1選擇汽車奔馳。您將其記錄爲 editor.putString(「nickname1 ## carSelection」,「mercedes」); 閱讀它時,可以使用 getSharedPreferences(context).getString(「nickname1 ## carSelection」,null); 如果不存在,此代碼將返回值mercedes或null。 (而不是空,你可以返回一個默認值) – Warwicky 2014-10-10 13:30:37
我也強烈建議你使用sqlite數據庫,但它的調用。 – Warwicky 2014-10-10 13:31:08