Java AsyncTask中的SharedReferences获得了表情值

Java AsyncTask中的SharedReferences获得了表情值,java,android,android-asynctask,sharedpreferences,Java,Android,Android Asynctask,Sharedpreferences,我有登录活动和异步任务类 因此,当转发一些值以将活动登录到AsyncTask时。。用toast-msg测试它,我在msg中得到空值 我已经测试过使用上下文和许多方法,但不起作用 我在loginactivity的共享体验: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); Editor editor = prefs.edit(); editor.putSt

我有登录活动和异步任务类

因此,当转发一些值以将活动登录到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();

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

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

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

//for example
editor.apply();

相同的结果给出空值