0

我正在做测验应用程序。我设置了 50 个问题,每个问题包含 4 个选项(单选组),带有上一个和下一个按钮。我需要的是选择答案并进行下一个问题时,他再次提出了以前的问题,那时他会在选定的状态下卑鄙地选择答案。但是用户选择的值我 getText() 如何实现呢?任何人帮助我..

提前致谢..

ImageView previousbtn1 = (ImageView) findViewById(R.id.prv_btn);
        previousbtn1.setOnClickListener(new Button.OnClickListener()
        {
            public void onClick(View v)
            {
                if ( j < 1 )
                {
                    Toast.makeText(Question.this, "First Question", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    --j;
                    --num;
                    --m;
                    TextView txtque = (TextView) findViewById(R.id.que_txt);
                    txtque.setText("Q" + num + ")" + ques1.get(j));
                    --k;
                    btn_practice1.setText(answ1.get((k * 4) + 0));
                    btn_practice2.setText(answ1.get((k * 4) + 1));
                    btn_practice3.setText(answ1.get((k * 4) + 2));
                    btn_practice4.setText(answ1.get((k * 4) + 3));
                }
            }
        });
4

2 回答 2

1

使用 SharedPreferences,它将永久保存您的值,直到用户重新安装(清除数据)应用程序。共享首选项的工作原理是这样的

// save string in sharedPreferences
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("some_key", string); // here string is the value you want to save
                    editor.commit();                    

// restore string in sharedPreferences 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
string = settings.getString("some_key", "");
于 2013-04-11T12:06:46.843 回答
1

基本上看起来你的问题不是如何设置一个单选按钮,而是整个概念——所以我描述了我会怎么做:

简单的方法

使用任何类型的列表或映射(最好是 hashmap,其中键是问题编号,值是答案值(1,2 或 3 - 简单整数))。然后,例如,当您在问题 2 中时,您检查是否已经存在键 2 的条目,如果是,则读出值并激活相应的单选按钮(这是通过 完成的方式radio1.setChecked(true))-如果没有一旦用户单击单选按钮,分析器就会存储在哈希图中。

也许更好的方法:)

与以前几乎相同,但不是简单的“整数”作为答案,而是使用对象作为答案(也许也用于问题,然后您可以将答案直接存储在问题中) - 如果答案/问题将是,这很好比简单的“1,2 或 3”更复杂。

边注

如果应用程序关闭后用户的答案应该可用,您必须将它们存储在 sqlite db 或共享首选项中。我认为 sqlite 对此更好,因为这些分析器并不是真正的 SharedPreferences/Settings,但你肯定需要更多的努力。


既然你要求它:

switch(answer){
    case 1:
        radio1.setChecked(true)
    break;
    case 2:
        radio2.setChecked(true)
    break;
    case 3:
        radio3.setChecked(true)
    break;
    default:
    break;
}
于 2013-04-11T12:03:17.303 回答