【问题标题】:How to hold the selected value in the radio button?如何在单选按钮中保存选定的值?
【发布时间】:2013-04-03 14:35:54
【问题描述】:

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

【问题讨论】:

  • 将您的问题编号保存为键,并将选定的重做按钮保存为 shareprefrance 中的值。当它返回到 privios ans 时,只需从 shareprefrance 获取。设置单选按钮被选中。
  • @sankar 帮我怎么做?
  • @dhavalsodhaparmar 可以为我提供示例代码。
  • 这里是带有复选框的代码:turing.cs.trincoll.edu/~ram/cpsc110/tutorials/quizapp
  • 检查 Marko Niciforovic 的答案

标签: android radio-button store


【解决方案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", "");

【讨论】:

  • 它正在工作,但如果我有 9 个任务并进入 9 个任务并进入 8 个任务,它的答案会显示,如果我来 7、6、5 ......它是所有 5 个任务的 8 个任务答案,6,7....
【解决方案2】:

基本上,您的问题似乎不在于如何将单选按钮设置为活动状态,而是整个概念 - 所以我描述了我将如何做到这一点:

简单的方法

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

也许更好的方法:)

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

旁注

如果应用程序关闭后用户的答案应该可用,您必须将它们存储在 sqlite 数据库或共享首选项中。我认为 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;
}

【讨论】:

  • 我无法理解您的回答。我的问题是,当我遇到棘手的问题时,我选择的那个选项应该处于选定状态,不应该清除如何执行此操作..
  • 答案很好,他是说你将所有 50 个问题的状态保存在某个数组/地图中,然后每当你打开一个特定问题时,从数组中获取值,将 radiotext 设置为活动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多