我在Activity
中有一個自定義DialogFragment
作爲內部class
。自定義DialogFragment
包含2個Buttons
。 第一個Button
打開Camera
,第二個打開Gallery
。按下Image
後顯示DialogFragment
。 直到這裏一切都很好。Android DialogFragment不會在Button OnClickListener回調中被取消
現在我想添加一項新功能。當第一次打開Activity
時,我想自動打開Camera
,這意味着我要「按」我的DialogFragment
的第一個Button
。
在我的Activity
onCreate
方法我只是顯示DialogFragment
並執行第一個點擊Button
。問題是DialogFragment
沒有被解僱。
這裏是我的代碼:
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().dismiss();
不解僱DialogFragment
,後Camera
回調(onActivityResult
)的DialogFragment
是仍然可見。如果我手動按Button
(不使用方法performClick
),一切正常。
任何想法?
感謝。