Passage de ArrayList d'objets par intention - Java (Android)
Je suis en train de passer une ArrayList d'objets par le biais d'une intention, mais impossible de le faire fonctionner. Voici ce que j'ai:
public class QuestionView extends Activity {
//variables and other methods...
public void endQuiz() {
Intent intent = new Intent(QuestionView.this, Results.class);
intent.putExtra("correctAnswers", correctAnswers);
intent.putExtra("wrongAnswers", wrongAnswers);
intent.putParcelableArrayListExtra("queries", queries);
startActivity(intent);
}
}
Intentions sont reçus ici:
public class Results extends Activity {
int cAnswers;
int wAnswers;
ArrayList<Question> qs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.resultsmain);
cAnswers = getIntent().getIntExtra("correctAnswers", -1);
wAnswers = getIntent().getIntExtra("wrongAnswers", -1);
qs = getIntent().getParcelableArrayListExtra("queries");
//more code...
}
}
Les deux ints, correctAnswer et wrongAnswers, soient reçus et que je peux les utiliser. Le ArrrayList n'est pas à venir à travers. Pas d'erreurs dans le endQuiz() la méthode mais le " qs = getIntent().getParcelableArrayListExtra("requêtes"); " est de lancer une erreur en lui disant "Lié Incompatibilité."
Toute aide est très appréciée!
Question de classe:
public class Question {
String a1;
String a2;
String a3;
String a4;
int correctAnswer;
String query;
int selectedAnswer;
boolean correctness;
public Question() {
}
public Question(String a1, String a2, String a3, String a4, int correctAnswer, String query, int selectedAnswer, boolean correctness) {
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
this.a4 = a4;
this.correctAnswer = correctAnswer;
this.query = query;
this.selectedAnswer = selectedAnswer;
this.correctness = correctness;
}
}
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Vous devez changer votre
Question
classe de mise en œuvre de Parcelable. L'interface Parcelable peut être déroutant au premier abord... mais accrochez-vous.Il y a deux Parcelable méthodes que vous devriez vous concentrer sur:
writeToParcel()
qui convertit votre classe sur une Parcelle objet.Question(Parcel in)
qui convertit une Parcelle objet de nouveau utilisables instance de votre classe.Vous pouvez en toute sécurité cut & coller les autres Parcelable informations que j'ai marqué.
Par souci de simplicité, je vais utiliser une partie de votre Question à la classe:
Maintenant changer la façon dont vous mettez
queries
dans votre Intention extras.La façon de lire le Parcelable tableau est parfait comme il est.
Afin d'être en mesure de fournir une liste de tableaux dans le cadre d'une Intention, votre type doit mettre en œuvre Parcelable. À en juger par le fait que l'on devait jeter votre Liste de
(ArrayList<? extends Parcelable>)
vous n'avez pas fait cela. Si vous aviez, vous pouvez tout simplement vous: