如何以编程方式关闭DialogFragment?我目前正在通过以下方式创建对话框:

void showDialogWithId(int id){

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);

    if (id == SEARCHING_DIALOG){

        // Create and show the dialog.
        DialogFragment newFragment = MyDialogFragment.newInstance(SEARCHING_DIALOG,"TEST");
        newFragment.show(ft, "dialog");
    }

    if (id == CONNECTING_DIALOG){

        // Create and show the dialog.
        DialogFragment newFragment = MyDialogFragment.newInstance(CONNECTING_DIALOG,"TEST");
        newFragment.show(ft, "dialog");
    }

    if (id == CONNECTIVITY_DIALOG){


        // Create and show the dialog.
        DialogFragment newFragment = MyDialogFragment.newInstance(CONNECTIVITY_DIALOG);
        newFragment.show(ft, "dialog");
    }

}

我希望通过以下方式解雇他们:
public void dismissDialog(){

    getFragmentManager().popBackStack();

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);


}

但是,对话框并未关闭...

最佳答案

尝试使用

getDialog().dismiss();

在DialogFragments内部。因此,例如,您可以像使用DialogFragment一样通过其标签找到DialogFragment,然后在其上调用一些调用此代码的方法。我通常不主动从Activity中退出DialogFragment,我的对话框按钮为我做了。但是我认为这也应该起作用。我不知道这将如何影响片段堆栈。

10-07 20:05
查看更多