Radiogroup isChecked

148
16 февраля 2018, 18:54

В своём приложении на Андроид я использую две активити,где первая активити представляет 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);
    }}
}
Answer 1

В вашем случае срабатывает OnCheckedChangeListener после LoadPreferences который и запускает вторую Activity. Попробуйте запустить метод LoadPreferences() до того как установили listener для радио группы :

intent = new Intent(Menu.this, MainActivity.class);
LoadPreferences();
radioGroup.setOnCheckedChangeListener(rad);
READ ALSO
Как просмотреть байт код класса в рантайме?

Как просмотреть байт код класса в рантайме?

Как получить байт код класса, это понятно, можно при помощи идеи или же дефолтными средствами

168
Spring Boot, Tomcat: Не мапит реквесты

Spring Boot, Tomcat: Не мапит реквесты

Написал сервис на Spring Boot, после чего, было необходимо перевести его на TomcatДля этого необходимо было добавить плагин в gradle, чтобы получить...

193
Тест с помощью selenium java [требует правки]

Тест с помощью selenium java [требует правки]

Всем приветХочу написать тест, который будет открывать веб-страничку, считывать нее текст, и в зависимости от результата нажимать ту или...

211
Radiogroup isChecked repeat

Radiogroup isChecked repeat

В своём приложении я использую radiogroup в которой находится несколько radiobuttonПри выборе, radiobutton передаёт имя своего id на активити 2

220