Я использую HomeActivity, которая динамически заменяет фрагменты и динамически добавляет их в макет фрейма контента по мере того, как пользователь выбирает элементы из ящика. Для каждого фрагмента он загружает фид из сети, который затем рендерит. Вот код, который я использую для переключателя -
public void loadFragment(Fragment frag, String tag) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_fragment, frag, tag);
try {
fragmentTransaction.commit();
} catch (IllegalStateException e) {
logger.error(TAG, "Failed to commit fragment transaction... ", e);
}
}
Теперь, если я переключаюсь между этими фрагментами из ящика (используется DrawerLayout) и не позволяю сетевому запросу для каждого фрагмента завершиться, каким-то образом новый заменяемый фрагмент помещается под скриншот старого фрагмента во время его загрузки. Поскольку старый фрагмент показывал значения из кеша, он показывает частичный поток.
Теперь, если вы заметили, что в верхней части этого стека есть фид из нового фрагмента, и в нем есть слои, как и должно быть, но в нижней части этого стека есть то, что кажется скриншотом предыдущего фрагмента, и этот, казалось бы, снимок экрана / частичная отрисовка в корне представление по z-индексу выше, чем новый фид по какой-то причине и затмевает его. Он также не взаимодействует, и, что интересно, я могу прокручивать новую ленту, которая находится по z-индексу ниже (хотя это самый верхний слой на картинке выше) даже с наложением.
Я пытался пройти иерархию представлений из корневого представления и распечатать все, и мне не удалось найти текст элементов скриншота (поэтому я думаю, что это изображение или какая-то оптимизация, выполненная третьей стороной Мы также используем SwipeToRefresh). Я действительно смущен относительно того, что это и как я могу избавиться от этого. Этого не произойдет, если я медленно переключаю фрагменты и позволяю им загружаться. Любые подсказки?