Java 如何保存arraylist单选按钮中的字符串并在文本框的下一页显示它
我正在开发测验应用程序,其中有一个包含10个问题的问题活动。 现在的问题是,我想在数组中的单选按钮上获取选中的文本,并将其显示在文本框的下一页,在该页中,我已经显示了正确的答案和来自数据库的问题 这是单选按钮第一页的代码Java 如何保存arraylist单选按钮中的字符串并在文本框的下一页显示它,java,android,arraylist,Java,Android,Arraylist,我正在开发测验应用程序,其中有一个包含10个问题的问题活动。 现在的问题是,我想在数组中的单选按钮上获取选中的文本,并将其显示在文本框的下一页,在该页中,我已经显示了正确的答案和来自数据库的问题 这是单选按钮第一页的代码 List<String> ls = new ArrayList<String>(); private boolean checkAnswer() { String answer = getSelectedAnswer(); if
List<String> ls = new ArrayList<String>();
private boolean checkAnswer() {
String answer = getSelectedAnswer();
if (answer == null) {
return false;
} else {
ls.add(answer);
if (currentQ.getAnswer().equalsIgnoreCase(answer)) {
currentGame.incrementRightAnswers();
} else {
currentGame.incrementWrongAnswers();
}
return true;
}
}
/**
*
*/
public String getSelectedAnswer() {
if (c1.isChecked()) {
return c1.getText().toString();
}
if (c2.isChecked()) {
return c2.getText().toString();
}
if (c3.isChecked()) {
return c3.getText().toString();
}
if (c4.isChecked()) {
return c4.getText().toString();
}
return null;
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
// Log.d("Questions", "Moving to next question");
a++;
qno++;
if (!checkAnswer())
return;
if (currentGame.isGameOver()) {
// stoptime();
db.open();
String total = currentGame.getRight() + "";
db.insertOptions(topic1, total, mon);
db.close();
alertb();
// mCountDown.cancel();
a = 0;
qno = 1;
} else {
Intent i = new Intent(this, QuestionActivity.class);
startActivity(i);
finish();
}
}
public String show(int i) {
String a = ls.get(i);
return a;
}
List ls=new ArrayList();
私有布尔校验应答(){
字符串应答=getSelectedAnswer();
如果(答案==null){
返回false;
}否则{
ls.添加(答案);
if(currentQ.getAnswer().equalsIgnoreCase(answer)){
currentGame.incrementRightAnswers();
}否则{
currentGame.IncrementErrorAnswers();
}
返回true;
}
}
/**
*
*/
公共字符串getSelectedAnswer(){
if(c1.isChecked()){
返回c1.getText().toString();
}
如果(c2.isChecked()){
返回c2.getText().toString();
}
if(c3.isChecked()){
返回c3.getText().toString();
}
if(c4.isChecked()){
返回c4.getText().toString();
}
返回null;
}
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
//TODO自动生成的方法存根
//日志d(“问题”,“转到下一个问题”);
a++;
qno++;
如果(!checkAnswer())
回来
if(currentGame.isGameOver()){
//停止时间();
db.open();
字符串总数=currentGame.getRight()+“”;
db.插入选项(主题1,总计,周一);
db.close();
alertb();
//mCountDown.cancel();
a=0;
qno=1;
}否则{
意图i=新意图(此,QuestionActivity.class);
星触觉(i);
完成();
}
}
公共字符串显示(int i){
字符串a=ls.get(i);
返回a;
}
在我的checkanswer()中,我正在列表ls.add(Item)中添加单选按钮的文本。但是这里我犯了一些错误,请纠正我
我在上面的页面上写了show(),这将帮助我在下一页获取arraylist的元素
这是我下一页的代码
public static String getAnswers(List<Question> questions) {
int question = 1;
StringBuffer sb = new StringBuffer();
for (Question q : questions){
sb.append("Q").append(question).append(") ").append(q.getQuestion()).append("? \n");
sb.append("Your Answer: ").append(qa.show(question)).append("\n");
sb.append("Correct Answer: ").append(q.getAnswer()).append("\n");
sb.append("____________________________________________________________________________________").append("\n\n");
question ++;
}
publicstaticstringgetanswers(列出问题){
int问题=1;
StringBuffer sb=新的StringBuffer();
关于(问题q:问题){
sb.append(“Q”)。append(问题)。append(“)”。append(Q.getQuestion())。append(“?\n”);
sb.append(“你的答案:”).append(qa.show(问题)).append(“\n”);
sb.append(“正确答案:”).append(q.getAnswer()).append(“\n”);
sb.追加(“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
问题++;
}
从本页显示我的正确答案和问题,但我选择的答案无效
它给我的错误是“数组索引超出范围,位置1没有元素”
请帮助我当android中的activity类被杀死时,数据成员会丢失所有值。因此,在访问上一个activity中声明的列表值时,您将获得IOOBE。创建一个捆绑包,并在上一个activity的onDestroy方法中添加以下代码
Bundle b = new Bundle();
b.putStringArrayList("answers", ls);
将此捆绑包设置为用于启动新活动的目的
Intent i = new Intent(this, QuestionActivity.class);
i.setExtra(b)
在其他活动的onCreate函数中,使用以下代码:
Bundle bundle = getExtras();
List<String> tmp = bundle.getStringArrayList("answers")
Bundle=getExtras();
List tmp=bundle.getStringArrayList(“答案”)
现在,您将获得加载到上一个活动的列表变量中的所有数据
如果您的问题和答案列表之间存在映射,则使用临时变量循环,并将其用作列表的索引,以获取相应的映射数据成员。另外,从0开始。请指出失败的确切位置以及getAnswers()中的变量qa@Neji qa是上面提到的questionactivity类的对象它无法创建动态大小的数组它给我错误arrayindex越界为什么你的索引值默认设置为1??你可以在循环中移动它我是指变量“question”的值默认情况下,从1开始,而不是从0开始。其他循环都是从1开始的,所以这不是问题所在。在第一个代码中,它没有在第二个位置插入值。当数组大小为1时,它会抛出错误。这是错误“java.lang.IndexOutOfBoundsException:无效索引1,大小为0”