Как сохранить предыдущее выбранное состояние переключателя, а также всегда в первом выбранном состоянии при выходе и запуске приложения?
Когда я нажимаю кнопку, появляется всплывающее диалоговое окно с пятью переключателями. Теперь требования
- Когда я запускаю и нажимаю кнопку, сначала появляется всплывающее диалоговое окно с первым переключателем, который должен быть в проверенном состоянии, в то время как другие находятся в непроверенном состоянии.
- Когда пользователь меняет выбор, выбрав следующую кнопку-переключатель, закрывает диалоговое окно и еще раз, если всплывающее окно означает, что он открыт, он должен быть в предыдущем выбранном состоянии.
Как поступить с этим?
Код выглядит следующим образом:
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;
}
}
};
});
}
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();
Этого должно быть достаточно для достижения желаемого поведения
Надеюсь, поможет!
Вы можете сохранить выбранный элемент в SharedPreferences. Проверьте сайт разработчика для хорошего введения в 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");