java - 如何将 OnClickListener 从 Activity 传递到 Fragment
问题描述
我需要将 OnClickListener 对象从活动传递到片段。我不能将参数传递给 Fragment 构造函数,所以我想做类似的事情:
Bundle bundle = new Bundle();
bundle.putCustomObject(new OnClickListener(){...});
解决方案
interface
我认为最好的方法是使用方法创建一个onClick()
并将回调设置Activity
为Fragment
.
界面
public interface FragmentClickListener
{
void onClick();
}
在 Fragment 类中创建一个变量和方法来接收 FragmentClickListener:
private FragmentClickListener listener;
public void setOnClickListener(FragmentClickListener listener)
{
this.listener = listener;
}
然后在您的 Fragment 类的某些方法中,您可以像这样调用侦听器:
void someMethod()
{
if(listener != null) {
listener.onClick();
}
}
在您的 Activity 类中定义回调,如下所示:
fragment.setOnClickListener(new FragmentClickListener(){
@Override
public void onClick() {
//do something here
}
});
推荐阅读
- amazon-web-services - How do I write unit test aws-sdk-go-v2 dynamodb implementation
- wpf - 如何将 XAML 主窗口中的网格用于 WPF 中的另一个类?
- grails - Grails 3.3.2 Spring 安全代码和 CAS
- python - 如何使 selenium webdriver 在散景文档中使用 Python 远程对象(Pyro)?
- java - Functional programming for ForLoop
- c# - 为什么使用 `Delegate.CreateDelegate` 创建的委托比 lambda 和方法委托更快?
- docker - 构建docker镜像时如何访问父主机服务?
- asp.net - Asp.Net Core:向 IdentityDbContext 添加数据或使用 DbContext
- c# - textchanged 事件中的复杂 if 语句
- docker - Docker - 从私有 gitlab 存储库中提取库