Фрагменты нарисованы на вершине друг друга - PullRequest
0 голосов
/ 05 июля 2018

Сценарий такой ... Я нажимаю кнопку, которая загружает следующий фрагмент. Пока анимация продолжается, я нажимаю кнопку последних приложений. После отображения экрана последних приложений я возвращаюсь к своему приложению.

Тогда я вижу два фрагмента, нарисованных друг на друге. Как будто Android забыл удалить предыдущий фрагмент. Я щелкаю назад, чтобы удалить все фрагменты, пока не достигну первого фрагмента, загруженного в эту FragmentActivity. Я регистрирую все фрагменты, полученные из FragmentManager, и он показывает только один. Но я все еще вижу два фрагмента, нарисованных один поверх другого. Тот, который должен был быть удален, не реагирует на сенсорные события, а другой реагирует так, как должен.

Это ошибка Android или моя ошибка? Есть ли способ исправить это или предотвратить это?

Это происходит не каждый раз. Так я загружаю свои фрагменты

public void loadNewFragment(AnimFragment newFragment, boolean addToSTack, boolean animate, String tag) {

    if (newFragment != null) {

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        transaction.setCustomAnimations(R.anim.fragment_enter_from_right, R.anim.fragment_exit_to_left, R.anim.fragment_enter_from_left, R.anim.fragment_exit_to_right);

        transaction.replace(R.id.fragment_container, newFragment, tag);

        if (addToSTack) {
            transaction.addToBackStack(tag);
        }

        int transactionId = transaction.commit();
        newFragment.setTransactionId(transactionId);
    }

}

и я удаляю их на спине, нажимая

getSupportFragmentManager().popBackStackImmediate();

1 Ответ

0 голосов
/ 05 июля 2018

На мой взгляд, фрагмент "ниже" находится в состоянии onPause(), и он все еще жив и виден.

Попробуйте использовать белый фон на корневой схеме переднего фрагмента, чтобы избежать показа фрагмента ниже. Кроме того, размер корневого макета (ширина и высота) переднего фрагмента должен соответствовать match_parent.

Проверьте этот сайт, чтобы понять Fragment жизненный цикл.

https://google -developer-training.gitbooks.io / Android-разработчик-продвинутый курс-концепция / блок-1-расширение-на-пользовательский опыт / урок-1-фрагменты / 1-2- с-фрагмента в течение жизненного цикла и-коммуникации / 1-2-C-фрагмента Жизненный цикл-и-communications.html

...