当片段处于​​backstack时,是否可以修改片段的视图?

时间:2014-01-19 12:05:09

标签: android android-fragments

我有两个片段在一个活动上共享相同的位置。活动开始时显示fragA。当您点击fragA中的按钮时,它会被推送到Backstack并由fragB替换。当按下来自fragB的按钮时,fragB被破坏,fragA从后台堆叠,但它也应根据fragB中的按钮更改某些视图(设置文本为以textview为例)。我使用接口进行片段活动通信。一切顺利,但fragA的观点不想改变。我认为我正在尝试改变它们,而片段是在后台。

@Override
    public void onFragBClick(Bundle bundle) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragA = (FragA) fragmentManager.findFragmentByTag(TAG_FRAG_A);
        if (fragA != null) {
            fragmentManager.popBackStack(TAG_FRAG_A_BACKSTACK, 
                    FragmentManager.POP_BACK_STACK_INCLUSIVE);
            fragA.onFragBSignalReceived(bundle);
        }

    }

这是处理通信的方法。日志中的一切似乎都很好,onFragBSignalReceived被调用,但我无法更改fragA的视图状态。我的猜测是,当它被调用fragA仍然在后台时,这就是为什么视图不会更新的原因。在那种情况下,我怎么能以其他方式实现这种行为?

1 个答案:

答案 0 :(得分:1)

您可能希望使用popBackStackImmediate()而不是popBackStack()。 popBackStackImmediate()将在方法内执行操作,而popBackStack()将对操作进行排队并稍后执行。