2011-01-06 140 views
0

我有一個登錄活動,它將憑據存儲在其自己的SharedPreferences中;然後我添加了兩個干將閱讀他們,像訪問其他活動的首選項

public String getUsername() { 
    return getPreferences(MODE_PRIVATE).getString("#username", null); 
} 

但是當我這樣稱呼它

String mUser = (new Login()).getUsername(); 

,這將引發一個NPE看來,一個簡單的構造器調用後的活動不能讀取其偏好,好像它是在一些未完成的狀態。我閱讀了很多相關的主題,但無法找到解決方案。基本上,我需要在我的應用程序中的活動之間共享這些憑據

回答

4

這不是您如何創建活動。當您撥打new Login()時,它沒有正確的上下文來訪問共享首選項。您也絕不應該在ActivityService的課程上撥打new。這不是android類的工作方式。

您需要一種方法來獲取對活動的引用。

但它聽起來像你的設計是不正確的。你不需要去看另一個活動的偏好。如果你這樣做,只需把它放在defaultSharedPrefernces中。

+0

感謝您的建議,但我甚至不知道默認的SharedPreferences是什麼。你可以編輯你的帖子,並更好地解釋自己嗎?我是Android開發人員的新手,只知道官方嘖嘖狀態 – Raffaele

+0

http://marakana.com/forums/android/examples/63.html – Falmarri

+0

非常感謝,法爾瑪利 – Raffaele