单击上一个按钮时如何保存和加载单选按钮状态?

时间:2019-04-21 06:00:03

标签: android radio-button state

我正在像这样开发android测验应用程序:

enter image description here

此应用程序包含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然后关闭应用程序,答案仍将存储在其中。

1 个答案:

答案 0 :(得分:1)

您可以使用 ViewPager ,其中包含多个片段。每页一个片段。这样,当您返回上一页时,已填充的RadioButton仍处于其状态。

因此,您需要一个父活动,其中包含一个ViewPager和该ViewPager的多个片段,用于显示问题和单选按钮。

祝你好运。