繁体   English   中英

如何保存在方向更改时选中的单选按钮?

[英]How to save radio button checked on orientation change?

我有一个带有 FrameLayout 的 Activity 来加载片段和一个带有四个单选按钮的 RadioGroup。 假设 RadioButton rb1、rb2、rb3、rb4 将分别在 checkChanged 上加载不同的 Fragment 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;
        }
    }

您应该尝试通过在savedInstanceState Bundle 中放置某种值来记住上次加载的片段。

这是保存和检索数据的方法: 使用 Save Instance State 保存 Android Activity 状态

onCreate包不为空时,从包中检索该值,然后加载正确的片段并更新复选框。

在 AndroidManifest 文件中,在您的活动中添加android:configChanges="orientation|screenSize"

如果您在 .mxl 文件中将id的属性设置为<RadioButton>视图,系统将为您保存状态,与<EditText>视图相同。 如果您只为<RadioGroup>设置id ,则它不起作用。

例如

之前(坏)

    <RadioButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       ... />

现在

    <RadioButton
       android:id="@+id/radio_example" # <----- missing property
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       ... />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM