【发布时间】:2017-02-01 02:12:13
【问题描述】:
我有一个 Activity,它有一个 listview 和一个 adapter。从适配器中,我正在调用 Dialog 片段,并且对话片段执行一些事件并编写了一个接口以将结果发送给适配器,现在我需要根据结果从活动中进行一些 UI 更改,如何将结果传递给活动..
活动--->适配器--->片段-->接口
【问题讨论】:
标签: android interface adapter dataflow
我有一个 Activity,它有一个 listview 和一个 adapter。从适配器中,我正在调用 Dialog 片段,并且对话片段执行一些事件并编写了一个接口以将结果发送给适配器,现在我需要根据结果从活动中进行一些 UI 更改,如何将结果传递给活动..
活动--->适配器--->片段-->接口
【问题讨论】:
标签: android interface adapter dataflow
最简单的解决方案:
fragment必须有 activity 的引用。所以在DialogFragment里面你可以调用:
((YourActivityName)getActivity()).anyPublicMethodOfActivity(someData);
如果你放一些代码,我可以告诉你fragment 是如何得到activity 的引用的。
【讨论】:
您可以通过界面来执行此操作。遵循以下 4 个步骤
1 创建一个接口
interface abc(){
void callDialogFragment()
}
在适配器构造函数中初始化该接口对象
abc mLisetner;
mLisetner=(abc)mContext; // 调用特定listner中的方法
mLisetner.callDialogFragment()
在activity上实现接口
在activity上定义overide方法并调用dialogFragment
@覆盖 公共调用DialogFragment(){
// 在这里调用你的对话框 }
【讨论】:
这看起来确实是耦合设计。 我想看一些代码来了解你到底做了什么。 我猜你已经将活动引用传递给了显示片段的适配器。
从技术上讲,您的活动可以实现您的界面,并且片段可以使用活动的引用来调用界面的方法,但它看起来是一个非常糟糕的设计。
检查https://github.com/greenrobot/EventBus,但即使这样,也不要过度使用。
【讨论】: