0

我有登录活动和 AsyncTask 类。

因此,当转发一些值以将活动登录到 AsyncTask .. 并使用 toast msg 对其进行测试时,我在 msg 中得到空值。

我已经测试过使用上下文和许多方法,但没有工作。

我在 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();
4

2 回答 2

0

当您检索用户名时,您将找不到时的默认值设置为“”。在你的后台任务中,你使用 context.getSharedPresferences,然后你使用 mActivity.getApplicationContext()

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

于 2013-08-30T21:30:14.397 回答
0

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

//for example
editor.apply();
于 2013-08-30T21:31:20.667 回答