Как получить идентификатор переключателя и использовать результат, чтобы повлиять на другой набор переключателей - PullRequest
0 голосов
/ 06 мая 2019

У меня есть 4 переключателя, т. Е. A, B, C и D во фрагменте 1. Я использую saveInstanceState для переноса выделения во фрагмент 2, в котором есть переключатели a, b, c и d. Я хочу иметь возможность предварительно выбрать «a», если был выбран «A», «b», если «B» и так далее. Как мне об этом.

Пока у меня есть это во фрагменте 1:

// Storing the selection
bundle.putString("argument", frequencyGroup.getCheckedRadioButtonId());

с последующей частичной попыткой во фрагменте 2

// Search through the bundle to get the ID and preselect in Fragment 2
radioGroup = view.findViewById(R.id.frequency_group);
        if(bundle!=null && bundle.containsKey("argument")){
            for (int i = 0; i <= radioGroup.getChildCount()-1 ; i++){
                String id = frequencyGroup.getChildAt(i).getId();
                if (id.equals(bundle.getString("argument"))){
                    // Somehow find the radio button with the above id
// and have it checked (need help here)
                }

            }
        }

Я полностью потерян в этот момент.

1 Ответ

0 голосов
/ 06 мая 2019

Возможно использование свойства tag в радио. Кнопки могут вам помочь.

в обоих фрагментах onCreate() установить теги:

for (int i = 0; i <= radioGroup.getChildCount()-1 ; i++){
  frequencyGroup.getChildAt(i).setTag("mRadio" + String.valueOf(i));
}

при передаче во второй фрагмент используйте это:

bundle.putString("argument", frequencyGroup.getCheckedRadioButtonId().getTag());

затем во втором фрагменте получите аргумент для поиска по тегу:

String mTag = ""
if(bundle!=null && bundle.containsKey("argument")){
   mTag = bundle.getString("argument");
}

, затем найдите управление и установите выбор:

RadioButton mRadio = (RadioButton)findViewWithTag(mTag);
mRadio..setChecked(true);

(pd. Извините за мойплохой английский)

...