我有一个显示自定义对话框片段的启动屏幕活动。当我按back时,我不仅想关闭dialogfragment,而且还想关闭它包含的活动。
dialogfragment缺少onbackpressed(),否则我将

getActivity().finish()

在回叫中。我也不想把它放在ondetach()中,因为如果用户单击dialogfragment中的某个元素,它应该在相同的启动活动中填充一个listview,而不是关闭应用程序。

最佳答案

为什么使用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();
    }
}

09-25 16:56