相关疑难解决方法(0)

当使用BottomNavigationView和新的NavController时,有没有办法保持片段活着?

我正在尝试使用新的导航组件.我使用带有navController的BottomNavigationView:NavigationUI.setupWithNavController(bottomNavigation,navController)

但是当我切换片段时,即使它们以前被使用过,它们也会每次都被破坏/创建.

有没有办法让我们的主要片段链接到我们的BottomNavigationView?

navigation android bottomnavigationview

55
推荐指数
3
解决办法
1万
查看次数

使用Jetpack的Android导航组件销毁/重新创建的片段

我正在尝试在现有应用程序中使用Jetpack的体系结构组件实现导航

我有一个活动应用程序,其中主要片段(ListFragment)是项目列表。当前,当用户点击列表项时,通过会将第二个片段添加到堆栈中fragmentTransaction.add(R.id.main, detailFragment)。因此,当按下后盖时,DetailFragment会分离,然后ListFragment再次显示。

使用导航架构,这是自动处理的。而不是添加新的片段,而是替换了片段,因此片段视图被销毁,onDestroyView()onCreateView()在按下back来重新创建视图时被调用。

我知道这是与LiveDataViewModel一起使用的一种很好的模式,可以避免使用过多的内存,但是在我的情况下,这很烦人,因为该列表的布局很复杂,夸大了时间和CPU的消耗,还因为我需要保存列表的滚动位置并再次滚动到用户离开片段的相同位置。有可能,但似乎应该存在一个更好的方法。

我试图将视图保存在片段的私有字段中,onCreateView()如果已经存在,请重新使用它,但这似乎是一种反模式。

private View view = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    if (view == null) {
        view = inflater.inflate(R.layout.fragment_list, container, false);
        //...
    }

    return view;
}
Run Code Online (Sandbox Code Playgroud)

还有其他更优雅的方法来避免重新布局吗?

android android-fragments android-jetpack android-architecture-navigation android-jetpack-navigation

25
推荐指数
3
解决办法
3673
查看次数