How to save state of radio button in android

£可爱£侵袭症+ 提交于 2019-12-30 14:50:52

问题


I want to save the state of radio button clicked in android. When user goes to next question it must save state so when he comes back to previous state it must show the selected option.


回答1:


Use Shared Preferences, To save your radio button's state,and you get to retrieve data in other activities.

this is java class:

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class ABCD extends Activity{


    private int ival;
    public static int glob=1;
    static SharedPreferences sPref;
    private SharedPreferences.Editor sE;
    RadioGroup rbMain;
    RadioButton rb1,rb2,rb3,rb4,rb5;   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        rbMain = (RadioGroup) findViewById(R.id.rgMain);
        rb1 = (RadioButton)findViewById(R.id.radio1);
        rb2 = (RadioButton)findViewById(R.id.radio2);
        rb3 = (RadioButton)findViewById(R.id.radio3);
        rb4 = (RadioButton)findViewById(R.id.radio4);
        rb5 = (RadioButton)findViewById(R.id.radio5);

        sPref = getSharedPreferences("Pref",0);
        sE = sPref.edit();
        ival = sPref.getInt("Pref", 0);

        if(ival == R.id.radio1){
            rb1.setChecked(true);
            glob=1;
        }else if(ival == R.id.radio2){
            rb2.setChecked(true);   
            glob=2;
        }else if(ival == R.id.radio3){
            rb3.setChecked(true);
            glob=3;
        }else if(ival == R.id.radio4){
            rb4.setChecked(true);   
            glob=4;
        }else if(ival == R.id.radio5){
            rb5.setChecked(true);
            glob=5;
        }

        rbMain.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            int state = 0;
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId == R.id.radio1){
                    sE.clear();
                    sE.putInt("Pref", checkedId);
                    sE.apply();
                }else if(checkedId == R.id.radio2){
                    sE.clear();
                    sE.putInt("Pref", checkedId);
                    sE.apply();
                }else if(checkedId == R.id.radio3){
                    sE.clear();
                    sE.putInt("Pref", checkedId);
                    sE.apply();
                }else if(checkedId == R.id.radio4){
                    sE.clear();
                    sE.putInt("Pref", checkedId);
                    sE.apply();
                }else if(checkedId == R.id.radio5){
                    sE.clear();
                    sE.putInt("Pref", checkedId);
                    sE.apply();
                }

            }
        });

    }   

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        sPref = getSharedPreferences("Pref",0);
        sE = sPref.edit();
        ival = sPref.getInt("Pref", 0);

        if(ival == R.id.radio1){
            rb1.setChecked(true);
            glob=1;
        }else if(ival == R.id.radio2){
            rb2.setChecked(true);   
            glob=2;
        }else if(ival == R.id.radio3){
            rb3.setChecked(true);
            glob=3;
        }else if(ival == R.id.radio4){
            rb4.setChecked(true);   
            glob=4;
        }else if(ival == R.id.radio5){
            rb5.setChecked(true);
            glob=5;
        }
    }

}

and this is my XML Layout:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
  android:background="@color/white"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    >
 <RadioGroup android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal" android:layout_height="wrap_content"
        android:layout_weight="1" android:id="@+id/rgMain">
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio1" android:layout_height="wrap_content"
            android:checked="true" android:text="1" android:textColor="@color/back">         
        </RadioButton>
        <RadioButton android:id="@+id/radio2"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:text="2" android:textColor="@color/back">            
        </RadioButton>
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio3" android:layout_height="wrap_content"
            android:text="3" android:textColor="@color/back">            
        </RadioButton>
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio4" android:layout_height="wrap_content"
            android:text="4" android:textColor="@color/back">            
        </RadioButton>
        <RadioButton android:layout_width="wrap_content"
            android:id="@+id/radio5" android:layout_height="wrap_content"
            android:text="5" android:textColor="@color/back">            
        </RadioButton>
    </RadioGroup>
</LinearLayout>

</ScrollView>

And, this can help you to do whatever you need.



来源:https://stackoverflow.com/questions/15062428/how-to-save-state-of-radio-button-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!