如何在片段之间切换而不每次都重新创建片段?

时间:2019-02-03 10:34:24

标签: android android-fragments bottomnavigationview

当使用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 :(得分:0)

不要每次都创建片段(fragment = new Events();)您可以将两个片段的引用保留在对象字段中,并在onNavigationItemSelected方法中返回已创建的片段。
或者,您可以将ViewPagerBottomNavigationView结合使用。如果您对ViewPager不太了解,请参考此article。请参阅this

答案 1 :(得分:0)

replace方法会破坏您的片段。一种解决方法是将它们设置为Visibility.GONE,另一种(不太容易)的方法是将它们保存在变量中。如果这样做,请确保不会左右泄漏内存。

meredrica中的here回答了这个问题