当前位置: 首页 > 知识库问答 >
问题:

如何在android中保存片段状态?

诸葛雨泽
2023-03-14

我有一个HomeActivity,我从中调用片段列表。在HomeActivity中,我有一个侧菜单,其中加载了所有片段。

现在,在这个列表中,我有一个名为HomeFraank的片段,它使用webservice显示带有数据的Google地图。

我想要的是我想加载Map dat只加载一次(第一次)片段,而不是每次单击sidemenu或从任何其他片段进来时。

我的HomeFragment或任何其他片段会立即加载,而不是每次加载。

共有2个答案

章威
2023-03-14

你应该用两样东西。

首次保存您的片段实例。用您想要的信息填充它。

第二个setRetainState(true)。这将防止您的片段被破坏,即使它是分离的。希望这能有所帮助。

曹涵润
2023-03-14

您可以隐藏/显示片段。无需更换、拆卸。例如,我有2个片段FragmentFeed和FragmentNotification,我们可以隐藏/显示或添加片段。

手柄单击菜单:

if (tabId.equals(AppConstants.FEED)) {
                    pushFragments(tabId, getFragmentFeed());
                } else if (tabId.equals(AppConstants.NOTIFICATION)) {
                    pushFragments(tabId, getFragmentNotification());
                }

处理显示/隐藏和添加片段:

public void pushFragments(String tag, Fragment fragment) {

        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction ft = manager.beginTransaction();


        if (manager.findFragmentByTag(tag) == null) {
            ft.add(R.id.realtabcontent, fragment, tag);
        }

        Fragment fragmentFeed = manager.findFragmentByTag(TAG_FEED);
        Fragment fragmentNoti = manager.findFragmentByTag(TAG_NOTIFICATION);

        // Hide all Fragment
        if (fragmentFeed != null) {
            ft.hide(fragmentFeed);
        }
        if (fragmentNoti != null) {
            ft.hide(fragmentNoti);
        }

        // Show  current Fragment
        if (tag == TAG_FEED) {
            if (fragmentFeed != null) {
                ft.show(fragmentFeed);
            }
        }
        if (tag == TAG_NOTIFICATION) {
            if (fragmentNoti != null) {
                ft.show(fragmentNoti);
            }
        }



        ft.commitAllowingStateLoss();
    }
 类似资料:
  • 我有4个按钮来替换活动中的片段[片段A,片段B,片段C,片段D],然后我将片段A替换为活动,然后我将片段A中的值更改为片段A,之后我将片段B替换为片段A,并将片段C替换为片段B.但是我想把片段A替换成片段C。如何在片段A中保存状态。 当我提交片段时编写代码 要替换的图表 片段A ------- 片段B ------- 片段C ------- PS.我不想使用返回按钮返回片段A,我想替换片段A并在第

  • 我搜索了很多信息,但没有一个明确的。有人能给出一个明确的解决方案和一个例子吗?

  • 我使用底部导航视图和导航组件。请告诉我如何在切换到另一个选项卡并返回旧选项卡后不销毁片段?例如,我有三个选项卡-A、B、C。我的开始选项卡是A。导航到B后,然后返回A。当我返回选项卡A时,我不希望它被重新创建。怎么做?谢谢

  • 我正在通过片段“A”调用从服务器获取数据。当我用“B”替换“A”时,在从“B”返回到“A”之后,每次都会调用片段“A”,因此每次都会生成HTTPGET。如何避免这种情况,并在活动中重用类似REORDER_to_FRONT的片段? 我正在使用此代码替换为新片段 当我反压时,

  • 我正在android应用程序中使用导航抽屉<每个片段都包含从internet获取数据并显示在自定义列表中的异步任务。 这是选择片段的代码: 但当我在片段之间切换时,一个异步任务再次开始加载数据<那么如何保存片段的状态呢 我在stackoverflow上尝试了所有可能的解决方案 请帮帮我

  • 我正在开发一个android烹饪应用程序(使用java),主页有一个回收器视图,其中填充了用户可以喜欢的食谱(类似于FaceBook帖子)。喜欢按钮是一个复选框,保存每个食谱的喜欢复选框状态的最佳方式是什么,所以当用户退出应用程序并再次登录时,他们不会多次喜欢同一个食谱。 在这种情况下,使用SharedReference是一个好主意吗? **im使用MySql作为数据库,不使用firebase。