Как переключаться между фрагментами, не воссоздавая фрагменты каждый раз? - PullRequest
0 голосов
/ 03 февраля 2019

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

Вот мой код:

private boolean loadFragment(Fragment fragment) {
    //switching fragment
    if (fragment != null) {
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragmentguest, fragment)
                .commit();
        return true;
    }
    return false;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
     Fragment fragment = null;

    switch (item.getItemId()) {
        case R.id.eventsguest:
            fragment = new Events();
            break;
        case R.id.about_usguest:
            fragment = new About_Us();
            break;
    }

    return loadFragment(fragment);
}

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Метод замены уничтожает ваши фрагменты.Один из обходных путей - установить для них Visibility.GONE, другой (менее простой) метод - сохранить их в переменной.Если вы сделаете это, убедитесь, что вы не пропускаете память влево и вправо.

на этот вопрос отвечает meredrica в здесь

0 голосов
/ 03 февраля 2019

Не создавать фрагмент каждый раз (fragment = new Events();). Вы можете сохранить ссылку на оба фрагмента в полях объекта и вернуть уже созданный фрагмент в методе onNavigationItemSelected.
Или вы можете объединить ViewPager сBottomNavigationView.Обратитесь к этой статье , и если вы не знаете много о ViewPager.См. это .

...