AsyncTask中的SharedPreferences获取空值

时间:2013-08-30 21:24:55

标签: java android android-asynctask sharedpreferences

我有登录活动和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();

2 个答案:

答案 0 :(得分:0)

当您检索用户名时,您可以设置无法找到“”的默认值。 在你的后台任务中,你使用了context.getSharedPresferences,但是你使用了mActivity.getApplicationContext()

我认为两者之间可能存在冲突,或者它们代表不同的背景

答案 1 :(得分:0)

commit()不会更新内存中的值,而只会更新持久存储上的值。因此,如果您的API级别为10,那么我建议您使用apply()来更新内存中的值。

//for example
editor.apply();