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