我有两个片段在一个活动上共享相同的位置。活动开始时显示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
仍然在后台时,这就是为什么视图不会更新的原因。在那种情况下,我怎么能以其他方式实现这种行为?
答案 0 :(得分:1)
您可能希望使用popBackStackImmediate()而不是popBackStack()。 popBackStackImmediate()将在方法内执行操作,而popBackStack()将对操作进行排队并稍后执行。