Activity 如何从其适配器获取接口调用
how can an Activity get interface calls from its adapter
我有一个 activity,它有一个 listview 和一个 adapter。我从适配器调用 Dialog 片段 并且对话片段执行一些事件并编写接口以将结果发送到适配器,现在我需要做一些 UI根据结果从 activity 更改,如何将结果传递给 activity ..
activity--->适配器--->片段-->接口
这看起来确实是耦合设计。
我想看一些代码来了解你到底做了什么。
我猜您已经将 activity 引用传递给了用于显示片段的适配器。
从技术上讲,您的 activity 可以实现您的接口,片段可以使用 activity 的引用来调用接口的方法,但它看起来是一个非常糟糕的设计。
检查 https://github.com/greenrobot/EventBus 但即便如此,也不要过度使用。
最简单的解决方案:
fragment
必须有activity
的引用。所以在 DialogFragment
里面你可以调用:
((YourActivityName)getActivity()).anyPublicMethodOfActivity(someData);
如果你输入一些代码,我可以告诉你 fragment
是如何得到 activity
的引用的。
您可以通过界面完成此操作。按照以下 4 个步骤
1 创建一个接口
interface abc(){
void callDialogFragment()
}
在适配器构造函数中初始化该接口对象
abc mLisetner;
mLisetner=(abc)mContext;
// 调用特定监听器中的方法
mLisetner.callDialogFragment()
在activity
上实现接口
定义actvity的覆盖方法并调用dialogFragment
@覆盖
public callDialogFragment(){
// 在这里调用你的对话框
}
我有一个 activity,它有一个 listview 和一个 adapter。我从适配器调用 Dialog 片段 并且对话片段执行一些事件并编写接口以将结果发送到适配器,现在我需要做一些 UI根据结果从 activity 更改,如何将结果传递给 activity ..
activity--->适配器--->片段-->接口
这看起来确实是耦合设计。 我想看一些代码来了解你到底做了什么。 我猜您已经将 activity 引用传递给了用于显示片段的适配器。
从技术上讲,您的 activity 可以实现您的接口,片段可以使用 activity 的引用来调用接口的方法,但它看起来是一个非常糟糕的设计。
检查 https://github.com/greenrobot/EventBus 但即便如此,也不要过度使用。
最简单的解决方案:
fragment
必须有activity
的引用。所以在 DialogFragment
里面你可以调用:
((YourActivityName)getActivity()).anyPublicMethodOfActivity(someData);
如果你输入一些代码,我可以告诉你 fragment
是如何得到 activity
的引用的。
您可以通过界面完成此操作。按照以下 4 个步骤
1 创建一个接口
interface abc(){
void callDialogFragment()
}
在适配器构造函数中初始化该接口对象
abc mLisetner;
mLisetner=(abc)mContext; // 调用特定监听器中的方法
mLisetner.callDialogFragment()
在activity
上实现接口
定义actvity的覆盖方法并调用dialogFragment
@覆盖 public callDialogFragment(){
// 在这里调用你的对话框 }