Android fragments Android DialogFragment不会在按钮OnClickListener回调时被解除

Android fragments Android DialogFragment不会在按钮OnClickListener回调时被解除,android-fragments,android-dialogfragment,buttonclick,dismiss,Android Fragments,Android Dialogfragment,Buttonclick,Dismiss,在我的活动中,我有一个自定义的对话框片段作为内部类。自定义对话框片段包含2个按钮。 第一个按钮打开摄像机,第二个按钮打开多媒体资料 通常,按下图像后会显示该对话框片段。 在这里之前一切都很好 现在我想添加一个新功能。当第一次打开活动时,我想自动打开摄像机,这意味着我想“按下”我的对话框片段的第一个按钮 在我的活动onCreate方法中,我只需显示对话框片段,然后单击第一个按钮。问题是,对话框片段没有被解除 这是我的密码: public static class MyDialogFragment

在我的
活动
中,我有一个自定义的
对话框片段
作为内部
。自定义
对话框片段
包含2个
按钮
。 第一个
按钮
打开
摄像机
,第二个按钮打开
多媒体资料

通常,按下
图像后会显示该
对话框片段
。 在这里之前一切都很好

现在我想添加一个新功能。当第一次打开
活动
时,我想自动打开
摄像机
,这意味着我想“按下”我的
对话框片段的第一个
按钮

在我的
活动
onCreate
方法中,我只需显示
对话框片段
,然后单击第一个
按钮
。问题是,
对话框片段
没有被解除

这是我的密码:

public static class MyDialogFragment extends DialogFragment {
    Button openCameraButton;
    Button openGalleryButton;
    boolean openCameraAutomatically;

    public static MyDialogFragment newInstance(boolean openCameraAutomatically) {
        MyDialogFragment f = new MyDialogFragment();
        Bundle args = new Bundle();
        args.putBoolean("open_camera", openCameraAutomatically);
        f.setArguments(args);
        return f;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        openCameraAutomatically = getArguments().getBoolean("open_camera");
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.my_dialog, container, false);
        getDialog().setTitle("title");

        openCameraButton = (Button) rootView.findViewById(R.id.open_camera_button);
        openCameraButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // launch Camera Intent...
                getDialog().dismiss();
            }
        });

        openGalleryButton = (Button) rootView.findViewById(R.id.open_gallery_button);
        openGalleryButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Launch Gallery Picker Intent
                getDialog().dismiss();

            }
        });


        if(openCameraAutomatically) {
            openCameraButton.performClick();
        }

        return rootView;
    }

}
我这样称呼它:

FragmentManager fm = getSupportFragmentManager();
MyDialogFragment myDialogFragment = MyDialogFragment.newInstance();
myDialogFragment.show(fm, "");
getDialog().disease()
不会关闭
对话框片段
,在
摄像机
回调(
onActivityResult
)后,
对话框片段仍然可见。如果我手动按下
按钮
(不使用
performClick
方法),一切正常

有什么想法吗

谢谢。

试着用
dismise()
来关闭对话框和片段,而不是
getDialog()。dismise()
只会关闭对话框而不是片段

作废辞退()

关闭片段及其对话框。如果片段被添加到后堆栈中,则将弹出该条目之前(包括该条目)的所有后堆栈状态。否则,将提交一个新事务以删除片段

更新

这是另一个想法。您试图在
对话框片段
的视图完全就绪之前关闭该对话框。一旦按钮可供您按下,即布局完成,这就不是问题

尝试在生命周期后期移动自动解雇。我想这对你有用