如何保存在方向更改时选中的单选按钮?
How to save radio button checked on orientation change?
我有一个 Activity,其中包含用于加载片段的 FrameLayout 和带有四个单选按钮的 RadioGroup。假设 RadioButton rb1、rb2、rb3、rb4 将在 checkChanged 上分别加载不同的片段 F1、F2、F3、F4,默认情况下它将加载 F1 片段。
现在,如果我选择 rb2,那么它正在加载片段 F2,并且在再次改变方向后它正在加载 F1。下面是我的代码,请给出任何建议如何处理它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRadioWidget = (RadioWidget) findViewById(R.id.segmented_control);
mRadioWidget.mRGroup.setOnCheckedChangeListener(this);
if (savedInstanceState == null) {
HomeFragment homeFragment = new HomeFragment();
loadFragment(false, homeFragment, HomeFragment.CLASSTAG);
}
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_home:
HomeFragment homeFragment = new HomeFragment();
loadFragment(false, homeFragment, HomeFragment.CLASSTAG);
break;
case R.id.rb_config:
ConfigFragment configFragment = new ConfigFragment();
loadFragment(false, configFragment, ConfigFragment.CLASSTAG);
break;
case R.id.rb_flash:
Toast.makeText(getApplicationContext(), "Not yet implemented", Toast.LENGTH_LONG).show();
break;
case R.id.rb_fav:
FavoritesFragment favFragment = new FavoritesFragment();
loadFragment(false, favFragment, FavoritesFragment.CLASSTAG);
break;
}
}
在 AndroidManifest 文件中添加 android:configChanges="orientation|screenSize"
在您的 activity.
您应该通过在 savedInstanceState
包中放置某种值来尝试记住最后加载的片段。
这是保存和检索数据的方式:Saving Android Activity state using Save Instance State
当 onCreate
包不为空时,从包中检索该值,然后加载正确的片段并更新复选框。
我有一个 Activity,其中包含用于加载片段的 FrameLayout 和带有四个单选按钮的 RadioGroup。假设 RadioButton rb1、rb2、rb3、rb4 将在 checkChanged 上分别加载不同的片段 F1、F2、F3、F4,默认情况下它将加载 F1 片段。
现在,如果我选择 rb2,那么它正在加载片段 F2,并且在再次改变方向后它正在加载 F1。下面是我的代码,请给出任何建议如何处理它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRadioWidget = (RadioWidget) findViewById(R.id.segmented_control);
mRadioWidget.mRGroup.setOnCheckedChangeListener(this);
if (savedInstanceState == null) {
HomeFragment homeFragment = new HomeFragment();
loadFragment(false, homeFragment, HomeFragment.CLASSTAG);
}
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_home:
HomeFragment homeFragment = new HomeFragment();
loadFragment(false, homeFragment, HomeFragment.CLASSTAG);
break;
case R.id.rb_config:
ConfigFragment configFragment = new ConfigFragment();
loadFragment(false, configFragment, ConfigFragment.CLASSTAG);
break;
case R.id.rb_flash:
Toast.makeText(getApplicationContext(), "Not yet implemented", Toast.LENGTH_LONG).show();
break;
case R.id.rb_fav:
FavoritesFragment favFragment = new FavoritesFragment();
loadFragment(false, favFragment, FavoritesFragment.CLASSTAG);
break;
}
}
在 AndroidManifest 文件中添加 android:configChanges="orientation|screenSize"
在您的 activity.
您应该通过在 savedInstanceState
包中放置某种值来尝试记住最后加载的片段。
这是保存和检索数据的方式:Saving Android Activity state using Save Instance State
当 onCreate
包不为空时,从包中检索该值,然后加载正确的片段并更新复选框。