【问题标题】:How to switch between fragments without recreating fragments each time?如何在不每次重新创建片段的情况下在片段之间切换?
【发布时间】:2019-02-03 10:34:24
【问题描述】:

在使用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);
}

【问题讨论】:

    标签: android android-fragments bottomnavigationview


    【解决方案1】:

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

    meredricahere 中回答了这个问题

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-02-18
        • 2014-05-07
        • 2021-04-08
        • 2021-12-04
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2020-04-18
        • 1970-01-01
        相关资源
        最近更新 更多