我有登录活动和AsyncTask类。
所以当转发一些值来登录活动到AsyncTask ..并用toast msg测试它时我会在msg中得到null值。
我已经测试过使用上下文和很多方法但没有工作。
我在loginactivity中的共享偏见:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.putString("logintemp", login1);
editor.putString("passwordtemp", pass1);
editor.apply();// commit is important here.
我在AsyncTask类的doInBackground中的代码:
Activity mActivity;
Context context ;
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mActivity.getApplicationContext());
String username = preferences.getString("logintemp","");
Toast.makeText(mActivity.getApplicationContext(), username , Toast.LENGTH_LONG).show();
答案 0 :(得分:0)
当您检索用户名时,您可以设置无法找到“”的默认值。 在你的后台任务中,你使用了context.getSharedPresferences,但是你使用了mActivity.getApplicationContext()
我认为两者之间可能存在冲突,或者它们代表不同的背景
答案 1 :(得分:0)
commit()
不会更新内存中的值,而只会更新持久存储上的值。因此,如果您的API级别为10,那么我建议您使用apply()
来更新内存中的值。
//for example
editor.apply();