如何知道片段何时来自弹出窗口

时间:2014-08-11 14:53:10

标签: android android-fragments back-stack

我有两个片段,A和B.之前,A和B都是顶级,当我想从一个移动到另一个时,我会使用像

这样的东西
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
                .replace(R.id.container, BFragment.newInstance(), B_TAG)
                .disallowAddToBackStack()
                .commit();

现在客户想要从B,按下后退按钮,应用程序转到A,所以我需要让B成为A的孩子,因此过渡看起来像

FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
                .add(R.id.container, BFragment.newInstance(), B_TAG)
                .addToBackStack(null)
                .commit();

从B到A

FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.executePendingTransactions();
            fragmentManager.popBackStack();
            fragmentManager.executePendingTransactions();

问题是,如果用户在B中更改某些内容,则A仍然具有旧数据。

有没有办法知道我是通过点击“后退”按钮并从后台弹出它来到达A所以我可以刷新数据?

另外,您是否看到了处理这两个片段之间移动的更好方法?

1 个答案:

答案 0 :(得分:0)

我会存储公共数据:

  • 在处理应用程序中的持久状态的单例中,如果该数据对整个应用程序感兴趣
  • 在一个数据片段(没有任何UI的片段)中,每个UI片段都可以访问和更改数据。

然后在每个UI片段中,您可以在恢复片段时更新视图。