我有一个实现自定义侦听器的片段。
该片段被替换并使用以下命令添加到后台堆栈中 addToBackStack()
现在,如果我从新片段弹出后退堆栈,则我正在调用侦听器来做someMethod()
。问题在于该方法与视图相关联。当然,由于尚未创建视图,因此它将返回错误。
我正在考虑使用Handler延迟该方法,但这似乎是错误的。有什么方法可以将数据传递到上一个片段?或至少检查是否已创建视图。
这是我替换/弹出片段时的方法:
String backStateName = fragment.getClass().getName();
boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
if (!fragmentPopped) { //fragment not in back stack, create it.
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.container, fragment);
ft.addToBackStack(backStateName);
ft.commit();
}
我有多个片段,可能会回到第一个片段。假设我有5个片段。
ABC是堆栈。然后,我使用该方法返回A。
让你的听众片段是片段A。您需要取消订阅片段AonPause()
并订阅onResume()
。此外,如果某个事件已被触发,则需要在有人订阅该事件后立即触发该事件(在您的Model中实现一些布尔标志或类似的标记)。
这样事件流将是这样的:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句