SwipeRefreshLayout обновить конфликт с помощью фрагментарных транзакций

TL;DR: здесь мой отчет об ошибке: http://goo.gl/UgBFW2

Используя SwipeRefreshLayout, если я вернусь и запускаю либо a getSupportFragmentManager().popBackstack(), super.onBackPressed(), либо fragmentTransaction.replace() вправо, когда адаптер запускает обновление просмотров, оба фрагмента перекрываются (видео, показывающее проблему, можно найти в верхняя ссылка).

Я пробовал несколько вещей, и добавление фона не является решением, так как фрагмент списка находится на переднем плане, а одним кликабельным является предыдущий фрагмент.

Кто-нибудь нашел решение?

Замена фрагмента не работает должным образом во время выполнения swipeRefresh

4 ответа

Добавьте это к фрагменту, содержащему салфетки

@Override
public void onPause() {
 super.onPause();
 if (swipeRefreshLayout!=null) {
 swipeRefreshLayout.setRefreshing(false);
 swipeRefreshLayout.destroyDrawingCache();
 swipeRefreshLayout.clearAnimation();
 }
}


Его ошибка. Google может исправить это в будущем.

Android-выпуск 78062


Проблема, с которой я столкнулся

Я столкнулся с той же проблемой в appcompat-v7: 25.1.0. Я пробовал все приведенные ниже коды, все еще проблема сохраняется.

@Override
public void onPause() {
 super.onPause();
 if (swipeRefreshLayout!=null) {
 swipeRefreshLayout.setRefreshing(false);
 swipeRefreshLayout.destroyDrawingCache();
 swipeRefreshLayout.clearAnimation();
 }
}

Решение

Если кто-то сталкивается с одной и той же проблемой, пожалуйста, снимите appcompat до 25.0.1 и используйте приведенный выше фрагмент, чтобы остановить анимацию. Он отлично работает для меня


Попробуйте обернуть SwipeToRefreshLayout внутри FrameLayout. Это исправило проблему для меня.

licensed under cc by-sa 3.0 with attribution.