在实例化新Activity / Fragment的Android Dialog上调用dismiss()

时间:2015-06-30 15:15:07

标签: android android-fragments android-dialogfragment

我想知道当使用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();
                        }
                    });

1 个答案:

答案 0 :(得分:0)

不,你没有明确需要,因为你之后开始的任何活动都会将其解雇。

dismiss()只是从视图堆栈中删除了Dialog,它不会删除对Dialog对象的所有底层引用。

虽然我会说你不需要这样做,但如果没有其他开发人员更好的可读性,我仍然会这样做。

Android Reference on Dialogs解释了这两点。