如何保存单选按钮检查方向更改?

时间:2015-01-23 10:33:04

标签: android android-fragments radio-group

我有一个带有FrameLayout的Activity来加载片段和一个带有四个单选按钮的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;
        }
    }

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

这是您保存和检索数据的方法:Saving Android Activity state using Save Instance State

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