是否可以通过片段获取监听器?

时间:2016-03-10 05:28:18

标签: android android-fragments

目前我开始测试不使用接口将具体侦听器从活动传递到片段。

此代码有效:

public Dialog onCreateDialog(Bundle savedInstanceState) {
    //......Skip
    return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener)getActivity(), year, month, day);
}

但是当我在片段之间做同样的事情时,它似乎无法发挥作用。

public Dialog onCreateDialog(Bundle savedInstanceState) {
    //...Skip
    return new TimePickerDialog(getActivity(), ((TimePickerDialog.OnTimeSetListener)((newFragment)getParentFragment())) ,hour, minute,false);
}

我使用log测试并且来自父片段的监听器似乎没有被调用。 我也尝试过getContext。

我是否通过错误的听众参考?感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:你的片段必须实现TimePickerDialog.OnTimeSetListener,DatePickerDialog.OnDateSetListener

           DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(
                    FragmentName.this, //pass fragment name 
                    Year,
                    Month,
                    Day
            );

答案 1 :(得分:0)

尝试

     public Dialog onCreateDialog(Bundle savedInstanceState) {
//...Skip
return new TimePickerDialog(getActivity(), ((TimePickerDialog.OnTimeSetListener)getParentFragment()) ,hour, minute,false);

}

确保父片段已实现TimpePickerDialog.OnTimeSetListener

使用您正在使用的ParentFragment实例初始化TimePickerDialog中的侦听器对象。