我正在像这样开发android测验应用程序:
此应用程序包含24个问题,我使用4个无线电组,它们在tablelayout中水平定向。每个用户单击下一步按钮,所有无线电组清除选中。但我希望单击每个先前的按钮,用户之前选择的选择将重新出现在单选按钮上。我已经尝试过此代码:
public void saveRadioButtons(){
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
for(RadioButton radioButton: radioButtons){
if (radioButton.isChecked()){
editor.putBoolean("state", radioButton.isChecked());
}
}
editor.apply();
}
public void loadRadioButtons(){
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
for(RadioButton radioButton: radioButtons){
radioButton.setChecked(sharedPreferences.getBoolean("state", false));
}
}
并且单选按钮想要自动填充,但是我很困惑如何确定之前检查过的单选按钮,因为基于上面的代码,所有单选按钮都是正确的。我尝试使用if单选按钮选中,然后将单选按钮的数据存储到具有字符串数据类型的共享引用中,因此代码应如下所示:
public void saveRadioButtons(){
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
for(RadioButton radioButton: radioButtons){
if (radioButton.isChecked()){
String value = radioButton.getText().toString();
editor.putString("state", value);
}
}
editor.apply();
}
public void loadRadioButtons(){
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
for(RadioButton radioButton: radioButtons){
String state = sharedPreferences.getString("state", null);
if (state==radioButton.getText().toString()){
radioButton.setChecked(true);
}
}
}
但是什么也没发生。有没有办法确定在使用第一个代码之前单击了哪个单选按钮?
,下一个问题是,我可以使用数组或全局变量而不使用SHAREDPREFERENCES吗?因为如果我使用SHAREDPREFERENCES然后关闭应用程序,答案仍将存储在其中。
答案 0 :(得分:1)
您可以使用 ViewPager ,其中包含多个片段。每页一个片段。这样,当您返回上一页时,已填充的RadioButton仍处于其状态。
因此,您需要一个父活动,其中包含一个ViewPager和该ViewPager的多个片段,用于显示问题和单选按钮。
祝你好运。