【发布时间】:2012-11-22 11:02:34
【问题描述】:
我正在尝试通过意图传递对象的 ArrayList,但无法使其工作。这是我所拥有的:
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);
}
}
这里正在接收意图:
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...
}
}
两个整数,correctAnswer 和 wrongAnswers,正在接收,我可以使用它们。 ArrayList 没有通过。 endQuiz() 方法中没有错误,但 'qs = getIntent().getParcelableArrayListExtra("queries");'正在抛出错误并说“绑定不匹配”。
对此的任何帮助表示赞赏!
问题类:
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;
}
}
【问题讨论】:
-
你的
Question类实现Parcelable了吗? -
不...这就是为什么他要投...
(ArrayList<? extends Parcelable>) queries);:) 这当然无济于事 -
我们能看到你的查询类型 ArrayList 的实际样子吗?我的意思是班级...
-
@Selvin,但他没有得到奇怪的类转换异常......
-
java 泛型 ...类似的代码不会在 C# 中编译,但在 java 中 ...
ArrayList<Object> a = null; ArrayList<? extends Parcelable> b = (ArrayList<? extends Parcelable>) a;有效 ...只有警告Unchecked cast from ArrayList<Object> to ArrayList<? extends Parcelable>....在运行时在 java 中你不需要'不知道泛型类型
标签: java android android-intent arraylist