目前我开始测试不使用接口将具体侦听器从活动传递到片段。
此代码有效:
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。
我是否通过错误的听众参考?感谢。
答案 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中的侦听器对象。