Android片段backstack(更新ui最新更改相同片段)

时间:2017-02-15 08:07:50

标签: android android-fragments fragment-backstack

我有3个片段。

  • HomeFragment
  • UserFragment
  • ImagesFragment

我使用此方法添加片段:

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

我的问题:

点击并开始此路径:

  1. 添加HomeFragment
  2. 添加UserFragment< - 点击关注按钮(按照btn UI更改关注完成
  3. 添加ImagesFragment
  4. 添加UserFragment< - 点击关注按钮(按照btn用户界面更改取消关注完成
  5. 按下按钮back to step 3 -- show ImagesFragment`
  6. 按下按钮back to step 2 -- show UserFragment` < - oops !!!这是我的问题。在第4步中,我点击了关注按钮,然后取消关注。但不是在第2步更改UI? :(
  7. 如何更新同一片段上最新更改的用户界面?

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

1 个答案:

答案 0 :(得分:1)

在UserFragment中,添加onHiddenChanged回调以刷新UI。 如果在UserFragment的恢复时并不总是需要刷新,请使用shouldReloadScreen(在活动中添加它)标记,如下所示:

@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步,而不是添加UserFragment删除ImageFragment。这将在stackTrace中仅保留一个UserFragment实例。