私は、ユーザーが初めてアプリを起動したときに表示されるアプリの設定アシスタントを実装したいと考えています。私はこれをうまく動作するように見えるPageViewerを使用します。Android RadioGroup onCheckedChangedは、リフレッシュするときに何度も呼び出されます。
最初のページでは、ユーザーにデフォルト言語を尋ねます。ユーザーがラジオグループから言語を選択すると、そのページを更新したいと思います。だから私は選択された言語でフラグメントをリロードする方法が必要です。
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()でリロードしようとします。
問題は次のとおりです.1つのラジオボタンを押すとすぐに、「test1」と「test2」という無限ループが表示されます。このメソッドは何度も何度も呼び出されますか?
フラグメントを一度にリロードするにはどうすればよいですか?