2013-04-11 83 views
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)); 
       } 
      } 
     }); 
+1

将您的问题编号保存为关键答案选择rediobutton作为shareprefrance中的值。当它返回到privios ans然后从shareprefrance获取。设置选定的单选按钮。 – 2013-04-11 12:03:52

+0

@sankar帮助我如何做到这一点? – 2013-04-11 12:12:55

+0

@dhavalsodhaparmar可以为我提供示例代码。 – 2013-04-11 12:15:27

回答

1

基本上它看起来像你的问题不是如何设置一个单选按钮活跃,但整体的概念 - 让我描述我如何会做到这一点:

最简单的办法

使用任何类型的列表或地图(最好的HashMap,这里的关键是问题的数量和价值是答案值(1,2或3 - 简单的整数))。然后,当你在问题2时,例如,检查是否存在alrerady键2的条目,如果是的话,那么你读出了该值并激活相应的单选按钮(这是通过radio1.setChecked(true)完成的) - if不是一旦用户点击一个单选按钮,则该存储器就存储在散列映射中。

的也许更好的方法:)

几乎与以前一样,但不是简单的“整数”当您使用对象对你的答案的答案(也许也是问题,那么你可以直接存储答案在问题中) - 如果答案/问题会变得更加复杂,那么简单的“1,2或3”就很好。

旁注

后,如果应用程序被关闭用户的答案应该是可用的,你必须将它们存储在任何一个SQLite数据库或共享偏好。我认为sqlite对此更好,因为这些ansers并不是真正的SharedPreferences/Settings,但是你肯定需要多一点努力。


既然你问它:

switch(answer){ 
    case 1: 
     radio1.setChecked(true) 
    break; 
    case 2: 
     radio2.setChecked(true) 
    break; 
    case 3: 
     radio3.setChecked(true) 
    break; 
    default: 
    break; 
} 
+0

我无法理解你的答案frnd ..我的问题是当我来以问题的问题是什么我选择该选项应该处于选择状态,不应该清除如何做到这一点.. – 2013-04-11 12:10:04

+0

检查编辑。但我不确定这是否可以帮助你 – 2013-04-11 12:13:06

+0

答案很好,他说你要在某个数组/地图中保存所有50个问题的状态,然后每当你打开一个特定的问题时,从数组中获取值,设置无线电文激活 – Sunny 2013-04-11 12:23:43

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", ""); 
+0

它的工作,但如果我有9个任务,并去9任务和来到8个任务,它的答案显示,如果我来7,6,5 ...其8个任务5,6,7的任务答案。 ... – 2013-04-12 08:40:51