not getting integer value from SharedPreference

2019-02-28 12:09发布

I am trying to store user id in SharedPreference in one activity and want to get this integer id in any activity.
To put this value in Shared Preference i use following code.

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putInt("userId", varaible);                 
prefsEditor.commit();  

Then i am trying to get this value, i use following code for this

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    int userId = myPrefs.getInt("userId", -1);  

But it return me -1 not userId. and if i use following line to fetch integer value then it will showing runtime exception.

    int userId = myPrefs.getInt("userId", Integer(null));   

I don't understand what's wrong in my code. How to get this integer userId in my another activity.
Please give me any reference or hint.
Thanks in advance.

2条回答
Summer. ? 凉城
2楼-- · 2019-02-28 12:22

There is nothing wrong with your code and I tested this exact case and it is working perfectly. For sure you can use the default value as -1.

Do you have both activities in the same application?

What I can suggest for debugging is to make sure that your application runs in the sequence you expect and that the value is stored correctly. You can try to retrieve it directly after storing it within the same activity.

查看更多
爷的心禁止访问
3楼-- · 2019-02-28 12:33

Change this:

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
int userId = myPrefs.getInt("userId", -1);  

to this

SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
int userId = myPrefs.getInt("userId", 0);  

it should work that way.

查看更多
登录 后发表回答