如何在android中保存单选按钮的状态中保、单选、按钮、状态

2023-09-06 19:29:42 作者:何必敷衍的那么真

我想保存在 android 中单击的单选按钮的状态.当用户进入下一个问题时,它必须保存状态,所以当他回到上一个状态时,它必须显示所选选项.

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.

推荐答案

使用共享首选项,保存单选按钮的状态,并在其他活动中检索数据.

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

这是java类:

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;
        }
    }

}

这是我的 XML 布局:

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.

 
精彩推荐
图片推荐