Как сохранить предыдущее выбранное состояние переключателя, а также всегда оставаться в первом выбранном состоянии при выходе и запуске приложения?

Когда я нажимаю кнопку, отображается всплывающее диалоговое окно с пятью переключателями. Теперь требования

  1. Когда я запускаю и нажимаю кнопку, сначала отображается всплывающее диалоговое окно с первым переключателем, который должен быть в отмеченном состоянии, а другие - в непроверенном состоянии.
  2. Когда пользователь изменяется, выбирая следующий переключатель, закройте диалоговое окно, и еще раз, если пользователь открывает всплывающее окно, оно должно быть в предыдущем выбранном состоянии.

Как это сделать?

Код выглядит следующим образом:

public class PopUpDialogRadioButton extends Activity {
    private Button popUpClick;
    private Dialog dialog;
    private RadioGroup radioGroup;
    private RadioButton radioButton1, radioButton2, radioButton3, radioButton4, radioButton5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.sortfilterclick);
    popUpClick = (Button) findViewById(R.id.popupButton); // on click of button, opens a pop up dialog
    popUpClick.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            dialog = new Dialog(PopUpDialogRadioButton.this);
            dialog.setContentView(R.layout.sortfilterrow);
            radioGroup = (RadioGroup) dialog.findViewById(R.id.radioGroup1);
            radioButton1 = (RadioButton) dialog.findViewById(R.id.radio1);
            radioButton2 = (RadioButton) dialog.findViewById(R.id.radio2);
            radioButton3 = (RadioButton) dialog.findViewById(R.id.radio3);
            radioButton4 = (RadioButton) dialog.findViewById(R.id.radio4);
            radioButton5 = (RadioButton) dialog.findViewById(R.id.radio5);
            radioButton1.setOnClickListener(radioButtonOnClickListener);
            radioButton2.setOnClickListener(radioButtonOnClickListener);
            radioButton3.setOnClickListener(radioButtonOnClickListener);
            radioButton4.setOnClickListener(radioButtonOnClickListener);
            radioButton5.setOnClickListener(radioButtonOnClickListener);
            radioGroup.clearCheck();     
            radioButton1.setChecked(true);
            int selectedId = radioGroup.getCheckedRadioButtonId();
            RadioButton osButton = (RadioButton) dialog
                    .findViewById(selectedId);
            StringBuffer responseText = new StringBuffer();
            responseText.append(osButton.getText());
            Toast.makeText(getApplicationContext(), responseText,
                    Toast.LENGTH_SHORT).show();
            // radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);

            dialog.setCancelable(true);
            dialog.setTitle("Sort By");
            dialog.show();
        }

        private final OnClickListener radioButtonOnClickListener = new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                /*
                 * RadioButton rb = (RadioButton) v;
                 * Toast.makeText(SortFilterPopupActivity.this,
                 * rb.getText(), Toast.LENGTH_SHORT).show();
                 */
                switch (v.getId()) {
                case R.id.radio1:
                    Toast.makeText(PopUpDialogRadioButton.this, "first",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio2:
                    Toast.makeText(PopUpDialogRadioButton.this, "two",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio3:
                    Toast.makeText(PopUpDialogRadioButton.this, "three",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio4:
                    Toast.makeText(PopUpDialogRadioButton.this, "four",
                            Toast.LENGTH_SHORT).show();
                                        dialog.dismiss();
                    break;
                case R.id.radio5:
                    Toast.makeText(PopUpDialogRadioButton.this, "five",
                            Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                    break;
                }
            }
        };
    });
}

person Shadow    schedule 15.12.2014    source источник
comment
Сохраните свой выбор в настройках и всякий раз, когда вы отображаете всплывающее окно с флажком, в следующий раз восстановите выбранный флажок из настроек.   -  person Ram kiran    schedule 15.12.2014


Ответы (2)


Вы должны использовать SharedPreferences для этого.

У вас есть 5 радиокнопок, поэтому вы можете использовать SharedPreferences со значением по умолчанию (например, 0) в случае, если вы раньше не использовали диалоговое окно.

int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).getInt("my_selected_radio",0);

Затем вы можете использовать свой OnClickListener, чтобы узнать, какое значение было выбрано, и сохранить его.

int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).edit().putInt("my_selected_radio",selectedValue).commit();

Этого должно быть достаточно для достижения желаемого поведения

Надеюсь, поможет!

person zozelfelfo    schedule 15.12.2014

Вы можете сохранить выбранный элемент в SharedPreferences. Посетите сайт разработчика, чтобы найти хорошее введение в общие настройки.

Пример использования:

   // Loading preferences.
   SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
   String selectedItem = settings.getString("chkboxSelection");
   if (selectedItem != null) {
        // Compare value and mark checkbox accordingly.
   }

   // Saving preferences.
   SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
   SharedPreferences.Editor editor = settings.edit();
   editor.putString("chkboxSelection","checkboxIdentifier");
person Janus Varmarken    schedule 15.12.2014