我正试图围绕从片段中移除事件并将事件发送到活动的顺序和过程。
我正在尝试只有一个FragmentA,它是一个项目列表,在按钮单击时转换到FragmentB,它会加载一个表单来添加一个新项目,然后当FragmentB完成表单时,将该项目添加到FragmentA列表。 (主要Arraylist存储在MainActivity中)。
基本上,我有一个MainActivity可以创建FragmentA(用项目填充列表)。我还有一个FragmentB(这是一个允许将项目添加到列表中的表单)。
我对此感到困惑的是如何正确设置回调。我理解如何使用一个片段(using this和this tutorials)来实现回调,但我的困惑是:
哪个顺序是正确的(如果有的话)?
MainActivity'创建'(转换)FragmentA,然后是FragmentA 过渡到FragmentB。 FragmentB然后发送回调(添加 一个新的项目)到FragmentA,FragmentA向MainActivity发出信号 将项添加到主列表(回调2)。然后是MainActivity 关闭FragmentB。 (我想把FragmentA打开)。
MainActivity'创建'(转换)FragmentA,然后是FragmentA 过渡到FragmentB。 FragmentB然后发送回调(添加 一个新项目)到MainActivity。然后MainActivity关闭FragmentB和 将状态返回给FragmentA。
MainActivity'创建'(转换)FragmentA,然后是MainActivity 当FragmentA发出回调信号以切换时,转换到FragmentB 片段(关闭fragmentA或将其添加到backstack)。 FragmentB 发送回调给MainActivity,MainActivity关闭FragmentB和 然后重新打开FragmentA。
希望我解释得还不错,但我知道这有点让我措辞混乱。
修改的
最后一个问题,如果您有15个需要回调的不同片段,活动最终会“实现”15个不同的片段侦听器吗?看起来有点过分了。
由于
答案 0 :(得分:1)
只考虑Activity
作为父亲,Fragment
是他的孩子,他们依赖父亲,所以让孩子们表达他们的意愿,糖爸爸决定什么对他的爱人有好处!
这种方法的主要优点是代码的一致性和模块性,实际上它们有服务器 - 客户端关系,Fragment
发送请求,任务由Activity
完成,每个元素都在播放干净简单的角色。
不要担心必须实现的接口数量,但请记住Activity
存在的原因所以您可以轻松实现应使用特定Fragment
管理的Activity
。
BroadcastReceiver
和EventBus库是沟通的其他选择,但不是最好的选择!