退出全屏对话框

时间:2016-08-04 02:38:37

标签: android

如果我启动像这样的全屏对话

FragmentManager fragmentManager = getActivity().getFragmentManager();
                                       DialogStyleCreator editor = new DialogStyleCreator();
                                       FragmentTransaction transaction = fragmentManager.beginTransaction();
                                       transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                                       transaction.add(android.R.id.content, editor).commit();

如何点击android后退箭头(位于菜单的左上角)或后退按钮,它会关闭对话框,而不是像在警告对话框中那样返回上一个活动?

2 个答案:

答案 0 :(得分:2)

您可以简单地将事务放在片段管理器的堆栈中并覆盖后退按钮的功能

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5
        && keyCode == KeyEvent.KEYCODE_BACK
        && event.getRepeatCount() == 0) {
        // Simply pop back your fragment stack here
        return true; 
    }
    return super.onKeyDown(keyCode, event);
}


@Override
public void onBackPressed() {
   // Simply pop back your fragment stack here
}

答案 1 :(得分:0)

由于您已将DialogFragment添加为transaction.add(android.R.id.content, editor).commit();,因此您可能无法选择收听解除回拨。  我建议你创建DialogFragment实例并像

一样启动它
fm.beginTransaction().add(sampleDialog, "Dialog").commit();

并设置活动后退按钮的回调界面点击并致电dismiss();