【问题标题】:Android fragment backstack (change ui on latest change same fragment)Android Fragment backstack(在最新更改相同的 Fragment 上更改 ui)
【发布时间】:2017-02-15 08:07:50
【问题描述】:

我有 3 个片段。

  • 主页片段
  • 用户片段
  • 图像片段

我使用这种方法添加片段:

  • add(R.id.frameLayout, HomeFragment, "HomeFragment");
  • add(R.id.frameLayout, UserFragment, "UserFragment");
  • add(R.id.frameLayout, ImagesFragment, "ImagesFragment");

我的问题:

我点击并开始这条路径:

  1. 添加HomeFragment
  2. 添加UserFragment 关注完成)
  3. 添加ImagesFragment
  4. 添加UserFragment 取消关注完成)
  5. 按返回键back to step 3 -- showImagesFragment`
  6. 按下返回按钮back to step 2 -- showUserFragment` 取消关注完成。但不在步骤 2 中更改 UI? :(

如何在同一片段的最新更改上更新 UI?

你有 Instagram 吗?请检查一下。打开 xyz 页面并开始关注。单击主页 btn(不要按返回)后再次打开 xyz 页面并设置取消关注。现在按返回按钮回到 xyz 页面。你显示更改跟随 btn ui

【问题讨论】:

  • 请在show fragmentadd fragmentupdate ui中显示您的代码
  • @Yat3s 代码不需要。请再次阅读我的问题
  • 问题是UserFragment是单实例还是两个实例?
  • @Yat3s 我想有两个例子。你有 Instagram 吗?请检查一下。打开 xyz 页面并开始关注。单击主页 btn(不要按返回)后再次打开 xyz 页面并设置取消关注。现在按返回按钮回到 xyz 页面。你显示更改跟随 btn ui
  • 我知道你的问题,有2个instance,你应该通知其他Fragment更新UI,你可以使用EventBusRxBus

标签: android android-fragments fragment-backstack


【解决方案1】:

在您的 UserFragment 中,添加 onHiddenChanged 回调以刷新您的 UI。 如果在恢复 UserFragment 时并不总是需要刷新,请使用 shouldReloadScreen(add it in your activity) 标志,如下所示:

@Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (hidden) {
            unregisterEventBus();
        } else {
            registerEventBus();
            if (((YourActivity) context).shouldReloadScreen()) {
                loadData();
                ((RevolveActivity) context).setshouldReloadScreen(false);
            }   
        }
    }

如果您在从第 4 步返回时不需要显示 ImageFragment,请使用以下方法:

从第 3 步移到第 4 步时,删除 ImageFragment 而不是添加 UserFragment。这将在 stackTrace 中只保留一个 UserFragment 实例。

【讨论】:

  • 我的 6 个步骤就是示例。在 instagram 或 spotify 中,此更新 UI 运行良好。 instagram 允许用户打开无限制的页面和帖子。并且按下后退按钮导航是不错的工作。在 instagram 中,如果您打开 10 次同一页面,旧页面会在新页面发生更改时更新 ui
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 2014-03-07
  • 2023-02-21
  • 2018-02-18
  • 1970-01-01
  • 2011-07-13
相关资源
最近更新 更多