如何将OnClickListener从Activity传递到片段

时间:2018-07-15 16:03:40

标签: java android android-fragments

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

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

2 个答案:

答案 0 :(得分:1)

向片段添加方法:

public void setOnClickListener(OnClickListener listener) { mListener = listwner;} 

调用片段的方法:

mFragment.setOnClickListener(new OnClickLkstener(.... 

答案 1 :(得分:0)

我认为最好的方法是使用方法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
    }
});