MainActivity.ce n'est pas une classe englobante AsyncTask
Je suis en train de créer un AsyncTask pour la 1ère fois, mais je n'ai pas beaucoup de chance.
Mon AsyncTask besoins pour obtenir des informations à partir d'un serveur, puis ajouter de nouvelles mises en page à la page principale pour afficher cette information.
Tout semble être plus ou moins claire, mais, le message d'erreur "MainActivity n'est pas une classe englobante" me dérange.
Personne d'autre ne semble avoir ce problème, donc je pense que je manque quelque chose de très évident, je ne sais pas ce que c'est.
Aussi, je ne suis pas sûr si j'ai utilisé de la bonne façon de le contexte, et parce que mon application ne se compile pas, donc je ne peux pas le tester.
Votre aide est très appréciée.
Voici mon code:
public class BackgroundWorker extends AsyncTask<Context, String, ArrayList<Card>> {
Context ApplicationContext;
@Override
protected ArrayList<Card> doInBackground(Context... contexts) {
this.ApplicationContext = contexts[0];//Is it this right way to get the context?
SomeClass someClass = new SomeClass();
return someClass.getCards();
}
/**
* Updates the GUI before the operation started
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
/**
* Updates the GUI after operation has been completed
*/
protected void onPostExecute(ArrayList<Card> cards) {
super.onPostExecute(cards);
int counter = 0;
//Amount of "cards" can be different each time
for (Card card : cards) {
//Create new view
LayoutInflater inflater = (LayoutInflater) ApplicationContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewSwitcher view = (ViewSwitcher)inflater.inflate(R.layout.card_layout, null);
ImageButton imageButton = (ImageButton)view.findViewById(R.id.card_button_edit_nickname);
/**
* A lot of irrelevant operations here
*/
//I'm getting the error message below
LinearLayout insertPoint = (LinearLayout)MainActivity.this.findViewById(R.id.main);
insertPoint.addView(view, counter++, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
}
}
OriginalL'auteur Vlad Spreys | 2013-01-02
Vous devez vous connecter pour publier un commentaire.
Eclipse est probablement vrai, et que vous tentez d'accéder à une classe (
MainActivity
) qui est à l'intérieur c'est propre fichier à partir d'une autre classe qui est dans son propre fichier (BackgroundWorker
) . Il n'y a aucun moyen de le faire - faire est une classe censée connaître l'autre instance comme par magie? Ce que vous pouvez faire:MainActivity
activityVariable.findViewById();
(je suis en utilisantmActivity
dans l'exemple ci-dessous) Sinon, votreApplicationContext
(utiliser une convention de nommage, leA
doit être en minuscule) est une instance deMainActivity
vous êtes bon pour aller, afin de neApplicationContext.findViewById();
En utilisant le Constructeur par exemple:
Comme pour
C'est très bien.
Voir ma réponse mis à jour.
parfait! Merci 🙂
Heureux de vous aider, amusez-vous bien 🙂
OriginalL'auteur A--C