在android的官方文档中,dialogFragment的show方法是这样调用的:
dialog.show(getFragmentManager(), "AddEventDialogFragment");
但是在Fragment中是无法调用getFragmentManager()方法的。
可以用两种方法代替:
dialog.show(getChildFragmentManager(), "AddEventDialogFragment");
dialog.show(getActivity().getFragmentManager(), "AddEventDialogFragment");
至于两者的区别我不清楚,但是在对我而用目前都能正常使用。
但是如果需要dialog返回一些信息,即交给activity处理一些事物,官方推荐在dialogFragment中添加一个接口,并在相应activity中实现这个接口:
public interface NoticeDialogListener{
public void onDialogPositiveClick(AddEventDialogFragment dialog);
public void onDialogNegativeClick(AddEventDialogFragment dialog);
}
而dailogFragment中会调用onAttach方法检测activity是否应用了这个方法:
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
try{
listener = (NoticeDialogListener) context;
}catch (ClassCastException e){
throw new ClassCastException(get