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()
只会关闭对话框而不是片段
作废辞退()
关闭片段及其对话框。如果片段被添加到后堆栈中,则将弹出该条目之前(包括该条目)的所有后堆栈状态。否则,将提交一个新事务以删除片段
更新:
这是另一个想法。您试图在对话框片段
的视图完全就绪之前关闭该对话框。一旦按钮可供您按下,即布局完成,这就不是问题
尝试在生命周期后期移动自动解雇。我想这对你有用