我想知道当使用Dialog / Fragment对话框来实例化一个新的Activity / Fragment时,是否以编程方式正确调用dialog.dismiss()或者它会自动发生吗?
例如:
FragmentManager fm = getFragmentManager();
final CustomDialogFragment dialog = CustomDialogFragment.newInstance(
"Continue / Checkout",
"Would you like to continue shopping or proceed to checkout",
"Continue Shopping", "Checkout");
dialog.show(fm, "checkout_dialog_fragment");
dialog.getFragmentManager().executePendingTransactions();
Dialog d = dialog.getDialog();
Button leftButton = (Button) d.findViewById(R.id.button1);
Button rightButton = (Button) d.findViewById(R.id.button2);
leftButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
rightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// DOES THIS DISMISS HAVE TO BE CALLED??
dialog.dismiss();
mListener.onFragmentRequestGoToBasket();
}
});
答案 0 :(得分:0)
不,你没有明确需要,因为你之后开始的任何活动都会将其解雇。
dismiss()
只是从视图堆栈中删除了Dialog,它不会删除对Dialog对象的所有底层引用。
虽然我会说你不需要这样做,但如果没有其他开发人员更好的可读性,我仍然会这样做。
Android Reference on Dialogs解释了这两点。