Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法使用ASyncTask在SharedReferences中保存值_Android_Twitter_Android Asynctask_Sharedpreferences - Fatal编程技术网

Android 无法使用ASyncTask在SharedReferences中保存值

Android 无法使用ASyncTask在SharedReferences中保存值,android,twitter,android-asynctask,sharedpreferences,Android,Twitter,Android Asynctask,Sharedpreferences,我正在开发一个twitter客户端,我可以成功登录并获取访问令牌并显示它,我想将令牌保存在共享首选项中,稍后使用它们(以避免用户每次登录) 我使用AsyncTask获取令牌,在执行后我放置共享首选项,但它强制关闭 这是我的异步: private class GetAccessTokenTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(

我正在开发一个twitter客户端,我可以成功登录并获取访问令牌并显示它,我想将令牌保存在共享首选项中,稍后使用它们(以避免用户每次登录) 我使用AsyncTask获取令牌,在执行后我放置共享首选项,但它强制关闭

这是我的异步:

private class GetAccessTokenTask extends AsyncTask<String, Void, Void> {
        @Override
        protected Void doInBackground(String... strings) {
            String verifier = strings[0];
                try {
                    accessToken = twitter.getOAuthAccessToken(verifier);
                    Log.d(MainActivity.class.getSimpleName(), accessToken.getToken());

                } catch (Exception e) {

                    Log.d(MainActivity.class.getSimpleName(),"nooooooooooooooooooooooo");

                }

            return null;
        }

         @Override
         protected void onPostExecute(Void result){

             Editor editor = mSharedPreferences.edit();
             editor.putString(ACCESS_TOKEN , accessToken.getToken());
             editor.putString(ACCESS_SECRET, accessToken.getTokenSecret() ); 
             editor.commit();

 Toast.makeText(getApplicationContext(), "hola", 54).show();
             super.onPostExecute(result);
         }
        }

似乎
mSharedPreferences
null
。您可以覆盖
onPreExecute
方法的
AsynkTask
并创建
sharedreferences
对象
msahredreferences
,也可以在
onPostExecute
中执行相同的操作

@Override
protected void onPostExecute(Void result){
     mSharedPreferences = getSharedPreferences(<Name>, <Mode>);
     Editor editor = mSharedPreferences.edit();
     editor.putString(ACCESS_TOKEN , accessToken.getToken());
     editor.putString(ACCESS_SECRET, accessToken.getTokenSecret() ); 
     editor.commit();

     Toast.makeText(getApplicationContext(), "hola", 54).show();
         super.onPostExecute(result);
}
@覆盖
受保护的void onPostExecute(void结果){
mSharedPreferences=getSharedReferences(,);
Editor=mSharedPreferences.edit();
putString(ACCESS_TOKEN,accessToken.getToken());
putString(ACCESS_SECRET,accessToken.getTokenCret());
commit();
Toast.makeText(getApplicationContext(),“hola”,54.show();
super.onPostExecute(结果);
}

请注意,您需要在
上下文中调用
getSharedReferences
,如果您没有在
活动中执行任务

请包括stacktrace。您在哪里引用了您的SharedReferences?应通过构造函数将mSharedPreferences传递给asynctaskShare stacktrace,并选中“mSharedPreferences”变量,是否已初始化?这可能是空的。请确保您正在创建mSharedPreferences。在(,)中写入什么将导致语法错误
@Override
protected void onPostExecute(Void result){
     mSharedPreferences = getSharedPreferences(<Name>, <Mode>);
     Editor editor = mSharedPreferences.edit();
     editor.putString(ACCESS_TOKEN , accessToken.getToken());
     editor.putString(ACCESS_SECRET, accessToken.getTokenSecret() ); 
     editor.commit();

     Toast.makeText(getApplicationContext(), "hola", 54).show();
         super.onPostExecute(result);
}