I have a Login Activity which stores credentials in its own SharedPreferences; then I added two getters for reading them, something like
public String getUsername() {
return getPreferences(MODE_PRIVATE).getString("#username", null);
}
but this throws a NPE when I call it like this
String mUser = (new Login()).getUsername();
It seems that the Activity cannot read its preferences after a simple contructor call, as if it were in some uncompleted state. I read lots o开发者_如何学Gof related topics, but wasn't able to find a solution. Basically, I need to share these credentials among activities in my application
That's not how you create Activities. When you just call new Login()
, it doesn't have a correct context to access the shared preferences. You should also NEVER, EVER call new
on a class that extends Activity
or Service
. That's not how android classes work.
You'll need a way to get a reference to the Activity.
But it sounds like your design isn't correct. You shouldn't need to get at another activity's preferences. If you do, just put it in the defaultSharedPrefernces instead.
精彩评论