我有一个登录活动,它将凭据存储在自己的SharedPreferences中;然后我添加了两个读取它们的吸气剂,类似
public String getUsername() {
return getPreferences(MODE_PRIVATE).getString("#username", null);
}
但是当我这样称呼它时会抛出一个NPE
String mUser = (new Login()).getUsername();
似乎在一个简单的构造函数调用之后,Activity无法读取它的首选项,就好像它处于某种未完成状态一样。我阅读了很多相关主题,但未能找到解决方案。基本上,我需要在我的应用程序中的活动之间共享这些凭据
答案 0 :(得分:4)
这不是你创建活动的方式。当您只是呼叫new Login()
时,它没有正确的上下文来访问共享首选项。您也应该永远不要在new
或Activity
扩展的课程上致电Service
。这不是android类的工作方式。
您需要一种获取活动参考的方法。
但听起来你的设计不正确。您不应该需要获得其他活动的偏好。如果你这样做,只需将它放在defaultSharedPrefernces中。