В своём приложении на Андроид я использую две активити,где первая активити представляет Radiogroup где при выборе определённой radiobutton она передаёт имя своего id во вторую активити,я сохраняю выбор radiobutton при переходе во вторую активити,по задумке при возвращении на первую активити пользователь видит помеченный вариант который он выбрал ранее,что бы не путатся и выбирает другой и его перебрасывает обратно на активити 2,но в моём случае при нажатии кнопки возврата на первую активити он не даёт ему перейти,как будто на первой срабатывает isChecked и он с темже id возвращает на вторую активити не давая выбрать другие варианты, не пойму как решить проблему.вот код первой активити:
Intent intent;
String name;
int id;
SharedPreferences pref;
RadioGroup radioGroup;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
id=radioGroup.getCheckedRadioButtonId();
radioGroup.setOnCheckedChangeListener(rad);
intent = new Intent(Menu.this, MainActivity.class);
LoadPreferences();
}
OnCheckedChangeListener rad = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
SavePreferences("radioindex", id);
name =getResources().getResourceEntryName(checkedId);
intent.putExtra("sample",name);
startActivity(intent);
finish();
}
};
private void SavePreferences(String key, int value) {
pref = getSharedPreferences("setting", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putInt(key, value);
editor.apply();
}
private void LoadPreferences() {
pref = getSharedPreferences("setting", MODE_PRIVATE);
id = pref.getInt("radioindex", -1);
if(id>0){
RadioButton rbtn=(RadioButton)radioGroup.findViewById(id);
rbtn.setChecked (true);
}}
}
В вашем случае срабатывает OnCheckedChangeListener после LoadPreferences который и запускает вторую Activity. Попробуйте запустить метод LoadPreferences() до того как установили listener для радио группы :
intent = new Intent(Menu.this, MainActivity.class);
LoadPreferences();
radioGroup.setOnCheckedChangeListener(rad);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей