Comment puis-je obtenir sharedpreferences dans Asynctask?
Je suis en train d'écrire une application android pour mon projet d'école, mais je suis coincé ici. Le problème est que j'ai accès à un SharedPreferences
de la valeur et que vous avez besoin dans un AsyncTask
classe. Quand j'essaye d'y accéder, il ne me laissera pas en raison du contexte. Comment puis-je atteindre mon SharedPreferences
dans mon AsyncTask
?
public class CheckAccess extends AsyncTask<JSONObject, Integer, Boolean>{
@Override
protected Boolean doInBackground(JSONObject... params) {
//Trying to get sharedpreferences here wont work.
return null;
}
}
Je veux dire les valeurs de l'accès.
Je pense que vous ne pouvez pas accéder à un
Il suffit de passer la valeur dont vous avez besoin dans l'AsyncTask, éventuellement dans un constructeur. Vous pouvez même passer dans un contexte, mais je n'aurais pas accès à
J'ai essayé: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ce); mais il me donner le message d'erreur: La méthode getDefaultSharedPreferences(Contexte) dans le type PreferenceManager n'est pas applicable pour les arguments (CheckAccess)
Vous pouvez le faire facilement. Voir tlahoda réponse à un résumé ou ma réponse pour une explication plus détaillée.
Je pense que vous ne pouvez pas accéder à un
sharedPreference
à partir d'un AsynTask
, au moins dans doInBackGround
. Avez-vous essayé d'accéder à partir d' onPreExecute
?Il suffit de passer la valeur dont vous avez besoin dans l'AsyncTask, éventuellement dans un constructeur. Vous pouvez même passer dans un contexte, mais je n'aurais pas accès à
doInBackground()
comme il peut ne pas être une menace sécuritaire.J'ai essayé: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ce); mais il me donner le message d'erreur: La méthode getDefaultSharedPreferences(Contexte) dans le type PreferenceManager n'est pas applicable pour les arguments (CheckAccess)
Vous pouvez le faire facilement. Voir tlahoda réponse à un résumé ou ma réponse pour une explication plus détaillée.
OriginalL'auteur user3316779 | 2014-05-11
Vous devez vous connecter pour publier un commentaire.
Remplacer
onPreExecute
ouonPostExecute
méthode deAsyncTask
et obtenirSharedPreferences
:Veuillez noter que
getSharedPreferences
est unActivity
méthode. Donc, vous avez besoin de l'appeler parContext
si vous ne l'utilisez pas dansActivity
.Voir mise à jour de réponse
Tout simplement passer le contexte de la
AsynTask
constructeur.J'ai peur que cette réponse est fausse. Voir tlahoda réponse à un résumé ou ma réponse pour une explication plus détaillée.
Merci pour la correction de moi. J'ai totalement raté. J'ai corrigé ma réponse
OriginalL'auteur Green goblin
Vous pouvez obtenir SharedPreferences dans un thread d'arrière-plan à l'aide de la PreferenceManager comme ceci:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(<YourActivity>.c');
OriginalL'auteur tlahoda
Vous pouvez obtenir
SharedPreferences
dans le fond à l'aide d'unAsyncTask
.L'erreur est dans cette ligne, où vous êtes de passage dans le mauvais type de variable:
Dans votre cas, le mot
this
se réfère à laAsyncTask
exemple que vous appelez si de.Ce que je fais c'est que je passe la
Context
à la tâche dans leexecute()
méthode. Voir le code ci-dessous pour un exemple de fonctionnement:Dans l'exemple ci-dessus,
this
se réfère à laActivity
ouService
que j'appelle cela de.OriginalL'auteur Richard Le Mesurier