shankey
shankey

Reputation: 333

How to save the state of rediobutton throughout the application in android?

I have two radio groups and each group has two radiobuttons. the default value is true (i.e. checked ) for first radiobutton in each group. When user cliks on any radiobutton and when user comeback from other activities the selections made on these radiogroups/radiobuttons are gone... how can I save/restore radiogroup/radiobutton selection state ?? here is my java code..for one radiogroup..

        final RadioButton radioOn = ( RadioButton )findViewById(
        R.id.rbOn );
    final RadioButton radioOff = ( RadioButton )findViewById(
        R.id.rbOff );
    radioOn.setChecked( true );
    radioOn.setOnClickListener( auto_lock_on_listener );
    radioOff.setOnClickListener( auto_lock_off_listener );

please help.

Upvotes: 3

Views: 6659

Answers (5)

Deepak
Deepak

Reputation: 2009

Try to save your radio group state by using SharedPreferences

     RadioGroup rG1 = (RadioGroup)findViewById(R.id.radioGroup1);
        int rG1_CheckId = rG1.getCheckedRadioButtonId();

SharedPreferences rG1Prefs = getSharedPreferences("rG1Prefs", MODE_WORLD_READABLE);
                SharedPreferences.Editor prefsEditor = rG1Prefs.edit();
                prefsEditor.putInt("rG1_CheckId", rG1_CheckId);
                prefsEditor.commit();

and put this lines for get back the checked radio button id.

SharedPreferences rG1Prefs = this.getSharedPreferences("rG1Prefs", MODE_WORLD_READABLE);
        rG1Prefs.getInt("rG1_CheckId", null);

and by using this id checked the radio button.

Upvotes: 1

user370305
user370305

Reputation: 109237

Use Shared Preferences, To save your radio button's state, Or you can use Application Variables (Variable which is declared globally static in that activity and you can use it in any activity)

But I think Shared Preferences is good..

Look at Android - Shared Preferences

Look at this example How to save login info to Shared Preferences Android(remember details feature)

EDIT:

public  class Test extends Activity   {     

private SharedPreferences prefs;
private String prefName = "MyPref";
private SharedPreferences.Editor editor; 
private static final String CHECK_STATE = "checkBox_State";
private boolean check_state;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings);

    //---getting the SharedPreferences object....
    prefs = getSharedPreferences(prefName, MODE_PRIVATE);    
    editor = prefs.edit();

    radioOn.setOnClickListener(new OnClickListener()  {
        public void onClick(View v)  {               
            if (((CheckBox) v).isChecked()) {
                check_state = true;                                 
            } else {
                check_state = false;                                    
            }
        }
    });

            // storing in shared preferences...
    editor.putBoolean(CHECK_STATE, check_state );             
    editor.commit();
    }
   });
   }

Upvotes: 0

Praveenkumar
Praveenkumar

Reputation: 24476

Use this code -

mFillingGroup.check(whichFilling);
    mAddMayoCheckbox.setChecked(addMayo);
    mAddTomatoCheckbox.setChecked(addTomato);

    /**
     * We also want to record the new state when the user makes changes,
     * so install simple observers that do this
     */
    mFillingGroup.setOnCheckedChangeListener(
            new RadioGroup.OnCheckedChangeListener() {
                public void onCheckedChanged(RadioGroup group,
                        int checkedId) {
                    // As with the checkbox listeners, rewrite the
                    // entire state file
                    Log.v(TAG, "New radio item selected: " + checkedId);
                    recordNewUIState();
                }
            });

    CompoundButton.OnCheckedChangeListener checkListener
            = new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            // Whichever one is altered, we rewrite the entire UI state
            Log.v(TAG, "Checkbox toggled: " + buttonView);
            recordNewUIState();
        }
    };
    mAddMayoCheckbox.setOnCheckedChangeListener(checkListener);
    mAddTomatoCheckbox.setOnCheckedChangeListener(checkListener);
}

/**
 * Handy helper routine to write the UI data to a file.
 */
void writeDataToFileLocked(RandomAccessFile file,
        boolean addMayo, boolean addTomato, int whichFilling)
    throws IOException {
        file.setLength(0L);
        file.writeInt(whichFilling);
        file.writeBoolean(addMayo);
        file.writeBoolean(addTomato);
        Log.v(TAG, "NEW STATE: mayo=" + addMayo
                + " tomato=" + addTomato
                + " filling=" + whichFilling);
}

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

Upvotes: 0

Pratik
Pratik

Reputation: 30855

you can store into the SharedPreference

simple example

SharedPreferences settings = getSharedPreferences("on_off", 0);    
boolean silent = settings.getBoolean("onoff", false);
////// to set the value use editor object from the SharedPreferences

Editor editor = settings.edit();
editor.putBoolean("onoff", true);
editor.commit(); // to save the value into the SharedPreference

Upvotes: 0

user1095420
user1095420

Reputation:

You need to override onSaveInstanceState(Bundle savedInstanceState) and write the application state values you want to change to the Bundle parameter like this:

@Override

    public void onSaveInstanceState(Bundle savedInstanceState) {
      // Save UI state changes to the savedInstanceState.
      // This bundle will be passed to onCreate if the process is
      // killed and restarted.
      savedInstanceState.putBoolean("MyBoolean", true);
      savedInstanceState.putDouble("myDouble", 1.9);
      savedInstanceState.putInt("MyInt", 1);
      savedInstanceState.putString("MyString", "Welcome back to Android");
      // etc.
      super.onSaveInstanceState(savedInstanceState);
    }

The Bundle is essentially a way of storing a NVP ("Name-Value Pair") map, and it will get passed in to onCreate and also onRestoreInstanceState where you'd extract the values like this:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
  double myDouble = savedInstanceState.getDouble("myDouble");
  int myInt = savedInstanceState.getInt("MyInt");
  String myString = savedInstanceState.getString("MyString");
}

You'd usually use this technique to store instance values for your application (selections, unsaved text, etc.).

Upvotes: 2

Related Questions