Intereting Posts
Производительность чтения файлов на смартфонах: внутреннее хранилище против SD-карты и жесткий диск ПК Вызывание методов вызова с использованием power mockito – org.powermock.api.mockito.ClassNotPreparedException У вас нет каталога libs в Android Studio Определить, что учетная запись для Android-андроида – файл или каталог Разрешение IntelliJ SQLite, отклоненное на Android Lollipop, работало до Лучшее место для addHeaderView в ListFragment Предварительная загрузка дополнительных представлений с помощью ListView-Adapter Студия Android говорит «Empty Test Suite» для AndroidTestCase Скопируйте бит-матрицу из растрового изображения в программирование ANDROID Facebook SDK для Android бросает исключение ClassNotFound Прямая передача видео в режиме RTSP Eclipse Juno ADT плагин NDK путь удален? Когда используется Snackbar isQueued ()? (Как поставить в очередь закусочную) В чем разница в GCC между -std = gnu ++ 0x и -std = c ++ 0x и какой из них следует использовать? Дооснащение и OkHttpClient, тайм-аут соединения catch в методе отказа

Android – Фрагмент экрана вращается

У меня есть 1 FragmentActivity с ViewPager, который обрабатывает 2 фрагмента.


Открытый класс MyFragmentActivity расширяет FragmentActivity {

private Fragment f1; private Fragment f2; private ViewPager myPager; private MyFragmentAdapter mFragmentsAdapter; private static ArrayAdapter<Fragment> mFragmentArray; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.my_layout); myViewPager = (ViewPager) findViewById(R.id.pager_acciones); mFragmentArray = new ArrayAdapter<Fragment>(getApplicationContext(),android.R.layout.simple_list_item_1); f1 = new Fragment(); f1 = new Fragment(); mFragmentArray.add(f1); mFragmentArray.add(f2); mFragmentsAdapter = new MyFragmentAdapter(getSupportFragmentManager()); myPager.setAdapter(mFragmentsAdapter); myPartidoPager.setCurrentItem(0); } public static class MyFragmentAdapter extends FragmentPagerAdapter { public AccionesFragmentAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return mFragmentArray.getCount(); } @Override public Fragment getItem(int position) { return mFragmentArray.getItem(position); } }

Моя проблема заключается в том, что каждый раз, когда меняется ориентация экрана, создается действие, а также фрагменты. Я не возражаю, если действие создано снова, но я не хочу, чтобы Фрагменты были воссозданы.

Solutions Collecting From Web of "Android – Фрагмент экрана вращается"

Самый простой способ – вывести оператор if сразу после вызова метода create и проверить, есть ли у вас что-то там. Если savedInstanceState не имеет значения null, вам не нужно ничего делать:

 if (savedInstanceState == null){ // do whatever } else { // dont do anything } 

(Этот ответ больше для людей, которые спотыкаются на этот вопрос, потому что они не могут понять, почему фрагменты получают повторное добавление каждый раз, когда они поворачивают свое устройство)

Вы можете добавить: android:configChanges="screenSize|orientation" в AndroidManifest.xml .

Это предотвратит Android-вызов onCreate при изменении ориентации экрана. Если вы хотите выполнить специальную обработку изменения ориентации, вы можете переопределить onConfigurationChanges .

Сохраните свой FragmentAdapter в onSaveInstanceState и верните его в Activity после изменения конфигурации с помощью onRetainNonConfigurationInstance, чтобы фрагменты выдержали изменение ориентации.