Я хочу реализовать помощник по настройке для своего приложения, которое отображается, когда пользователь запускает приложение в первый раз. Для этого я использую PageViewer, который работает нормально.Android RadioGroup onCheckedChanged вызывается снова и снова при обновлении Фрагмент
На первой странице запрашивается пользователь по умолчанию. Я хочу обновить страницу, когда пользователь выбирает свой язык из RadioGroup. Поэтому мне нужен способ перезагрузить фрагмент на выбранном языке.
public class SetupAssistantLanguageFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.setup_language_fragment, container, false);
((RadioGroup) view.findViewById(R.id.setup_language_radiogroup)).setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
String langcode = "";
if (i == R.id.setup_fragment1_languagechooser_en) {
langcode = "en";
} else {
langcode = "de";
}
((SetupAssistantActivity) getActivity()).changeLanguage(langcode);
SetupAssistantLanguageFragment.this.refreshView();
System.out.println("test1");
}
});
return view;
}
public void refreshView() {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(this).attach(this).commit();
System.out.println("test2");
}
}
Изменение языка работает, но только для страниц, следующих за первой страницей. Это связано с тем, что фрагмент необходимо перезагрузить, когда язык изменился. Я пытаюсь перезагрузить в refreshView().
Проблема: как только я нажимаю одну радиокнопку, я получаю бесконечную печать цикла «test1» и «test2». Почему этот метод называется снова и снова?
Как я могу перезагрузить фрагмент ровно один раз?