Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何保存arraylist单选按钮中的字符串并在文本框的下一页显示它_Java_Android_Arraylist - Fatal编程技术网

Java 如何保存arraylist单选按钮中的字符串并在文本框的下一页显示它

Java 如何保存arraylist单选按钮中的字符串并在文本框的下一页显示它,java,android,arraylist,Java,Android,Arraylist,我正在开发测验应用程序,其中有一个包含10个问题的问题活动。 现在的问题是,我想在数组中的单选按钮上获取选中的文本,并将其显示在文本框的下一页,在该页中,我已经显示了正确的答案和来自数据库的问题 这是单选按钮第一页的代码 List<String> ls = new ArrayList<String>(); private boolean checkAnswer() { String answer = getSelectedAnswer(); if

我正在开发测验应用程序,其中有一个包含10个问题的问题活动。 现在的问题是,我想在数组中的单选按钮上获取选中的文本,并将其显示在文本框的下一页,在该页中,我已经显示了正确的答案和来自数据库的问题

这是单选按钮第一页的代码

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”