【发布时间】:2019-12-18 08:47:42
【问题描述】:
真的有必要像这段代码那样在底部导航菜单中导航时总是重新创建片段吗?
@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 中只使用对我的片段的引用而不是创建新片段。
可以按照描述的方式做而不使用上面的代码吗?还是按照描述的方式进行操作会导致某处出现并发症?
【问题讨论】:
-
你可以使用单例模式来做到这一点。检查这个答案:stackoverflow.com/questions/14839152/….
-
使用单例模式,您只会为每个片段创建一个实例,并且会一次又一次地重复使用它们。
标签: android android-fragments buffering android-bottomnav