如何在单选按钮中保留所选值?

时间:2013-04-11 11:53:53

标签: android radio-button store

我正在做测验应用。我已经设置了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));
                }
            }
        });

2 个答案:

答案 0 :(得分:1)

基本上看起来你的问题不在于如何设置单选按钮是活动的,而是整个概念 - 所以我描述了我是如何做到的:

简单方法

使用任何类型的列表或映射(最好是hashmap,其中键是问题编号,值是答案值(1,2或3 - 简单整数))。然后当你在问题2时,你检查是否有一个alrerady键2的条目,如果是这样你读出了值并调整相应的单选按钮(这是用{{1}完成的方式}) - 如果没有用户单击单选按钮,则anser存储在哈希映射中。

可能更好的方式:)

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

旁注

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


既然你要求它:

radio1.setChecked(true)

答案 1 :(得分: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", "");