我使用 DialogFragment
创建/显示 dialog
。
此外,当我单击对话外时,我想解开对话。
我尝试在创建对话后调用dialog.setCanceledOnTouchOutside(true)
方法,但行不通。
我尝试了其他帖子中的一些解决方案,但仍然无法正常工作。
问题在哪里?
这是我的代码DialogSelectCategory.java
<!-- language: java -->
public class DialogSelectCategory extends DialogFragment {
static final String tag = "DialogSelectCategory";
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Activity act = getActivity();
AlertDialog.Builder builder = new AlertDialog.Builder(act);
String title = getResources().getString(R.string.select_category);
View view = LayoutInflater.from(act).inflate(R.layout.dialog_category, null, false);
builder.setView(view);
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
dialog.dismiss();
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
dialog.dismiss();
}
});
Dialog dialog = builder.create();
setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
return dialog;
}
public void showDialog(FragmentManager fragmentManager) {
FragmentTransaction ft = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag(tag);
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
this.show(fragmentManager, tag);
}
}
当您使用dialogfragment显示对话框
时,问题正在发生根据http://developer.android.com/reference/android/app/dialogfragment.html,解决方案是在DialogFragment
中覆盖onCancel
// DialogFragment, not Dialog
@Override
public void onCancel(DialogInterface dialog) {
}