首页 > 解决方案 > 如何将 OnClickListener 从 Activity 传递到 Fragment

问题描述

我需要将 OnClickListener 对象从活动传递到片段。我不能将参数传递给 Fragment 构造函数,所以我想做类似的事情:

Bundle bundle = new Bundle();
bundle.putCustomObject(new OnClickListener(){...});

标签: javaandroidandroid-fragments

解决方案


interface我认为最好的方法是使用方法创建一个onClick()并将回调设置ActivityFragment.

界面

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
    }
});

推荐阅读