我有一个启动画面Activity,显示自定义DialogFragment。当我按下时,我不仅要关闭对话碎片,还要关闭它包含活动。
DialogFragment没有onBackPressed(),否则我会把
getActivity().finish()
在那个回调中。我也不想把它放在onDetach()中,因为如果用户点击了对话框片段中的元素,它应该在同一个启动活动中填充列表视图而不是关闭应用程序。
答案 0 :(得分:3)
为什么要使用onDismiss
回调?像这样:
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
getActivity().finish();
}
或覆盖您活动中的onBackPressed
:
@Override
public void onBackPressed() {
MyFragment myFrag = getFragmentManager().findFragmentByTag("myFrag");
if (myFrag != null && myFrag.mDialog.isShowing())
myFrag.mDialog.dismiss();
finish();
} else {
super.onBackPressed();
}
}
答案 1 :(得分:0)
您可以尝试重写onKeyDown()来检测DialogFragment中的Back按钮:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
....
答案 2 :(得分:0)
public class ShadowDialog extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.shadow_loader,null);
final Dialog dialog = new Dialog(getActivity()){
@Override
public void onBackPressed() {
super.onBackPressed();
getActivity().onBackPressed();
}
};
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
}
答案 3 :(得分:0)
python manage.py migrate cities_light
python manage.py manage cities_light