2015-01-23 6 views
0

У меня есть Activity с FrameLayout для загрузки фрагмента и RadioGroup с четырьмя переключателями. Скажем, RadioButton rb1, rb2, rb3, rb4 будет загружать разные фрагменты F1, F2, F3, F4 соответственно в checkChanged, и по умолчанию он будет загружать фрагмент F1.Как сохранить переключатель переключателя при изменении ориентации?

Теперь, если я выбираю rb2, тогда он загружает фрагмент F2 и после изменения ориентации снова загружает F1. Bellow - мой код, пожалуйста, дайте какое-либо предложение, как с ним справиться.

@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; 
     } 
    } 
+0

Вы можете использовать 'shared preference' для проверки ориентации –

ответ

1

В файле AndroidManifest добавьте android:configChanges="orientation|screenSize" в свою деятельность.

+2

Добавление этого в тег активности предотвратит возникновение проблемы, но это не так, как это должно быть сделано, поскольку это предотвращает воссоздание активности, что приводит к другим проблемам, таким как поскольку правильная компоновка не устанавливается для ландшафтного режима, и все такие случаи должны быть обработаны разработчиком явно в коде. –

1

Вы должны попытаться вспомнить последний загруженный фрагмент, поместив какое-то значение в набор savedInstanceState.

Это, как вы можете сохранять и извлекать данные: Saving Android Activity state using Save Instance State

Когда в onCreate расслоение не равно нулю, то значение извлечения из пачки, а затем загрузить нужный фрагмент и обновить флажок.

Смежные вопросы