如何在不创建新片段的情况下显示片段?

Posted

技术标签:

【中文标题】如何在不创建新片段的情况下显示片段?【英文标题】:How can I display a fragment without creating a new one? 【发布时间】:2021-12-04 11:40:12 【问题描述】:

我有一个带有底部导航菜单的应用,它使用开关盒来更改显示的片段

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_classes:
                            selectedFragment = new ClassesFragment();
                            break;
                        case R.id.nav_homework:
                            selectedFragment = new HomeworkFragment();
                            break;
                    
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            selectedFragment).commit();
                    return true;
                

但是,我的一个片段中有一个 ArrayList,其中包含来自用户输入的信息,如果应用程序关闭并再次打开,我需要保存这些信息。以我现在的方式,每次单击菜单选项时它都会创建一个新片段。我怎样才能让它打开/显示一个预先存在的片段?

谢谢

【问题讨论】:

欢迎来到 SO。 android studio 是您用来开发应用程序的工具,但您的问题根本不涉及 IDE。最好使用android 而不是android-studio 【参考方案1】:

您必须将该数据存储在片段之外。不仅仅是通过打开/关闭应用程序,可以出于多种原因重新创建片段。

查找存储库模式并决定您希望(或允许)存储该数据的位置。 (共享偏好、房间(sqlite)数据库等)

【讨论】:

以上是关于如何在不创建新片段的情况下显示片段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不与 MainActivity 交互的情况下从通知中打开片段页面?

如何在不锁定活动方向的情况下锁定片段方向?

如何在不复制片段的情况下传递道具

我可以在不重新创建任何内容的情况下立即将片段移动到其他地方吗?

恢复片段而不重新创建?

如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?