0

像在这段代码中那样导航底部导航菜单时,是否真的有必要总是重新创建片段?

  @Override
  public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment selectedFragment = null;

                switch (item.getItemId()) {
                    case R.id.nav_home:
                        selectedFragment = new HomeFragment();
                        break;
                    case R.id.nav_favorites:
                        selectedFragment = new FavoritesFragment();
                        break;
                    case R.id.nav_search:
                        selectedFragment = new SearchFragment();
                        break;
                }

                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        selectedFragment).commit();

                return true;
            }
        };

我宁愿在周围 MainActivity 的 onCreate 中创建我所有的 Fragments 并将它们作为成员变量存储在那里。然后我可以在 onNavigationItemSelected 中只使用对我的片段的引用而不是创建新片段。

可以按照描述进行操作而不使用上面的代码吗?或者按照描述的那样做会在某处引起并发症吗?

4

2 回答 2

0

实际上,在创建时创建它们将是最好的方法。此外,有时人们倾向于在创建时添加大量初始化,从长远来看,您的应用程序可能会在每次需要它们时初始化片段时使用太多内存。

于 2019-08-11T12:33:36.950 回答
0

您必须负责保存您的片段状态,因此在娱乐时,您的数据将随时可用。你可以试试这样的

https://proandroiddev.com/fragments-swapping-with-bottom-bar-ffbd265bd742

尽管您可以尝试许多方法。

您可以一次创建所有片段并将它们与底部导航交换。但出于明显的导航和性能原因,我不建议这样做。

于 2019-08-11T18:06:31.103 回答