Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按下home键后,DialogFragment将丢失或隐藏_Android_Android Fragments_Android Alertdialog_Android Dialogfragment_Android Dialog - Fatal编程技术网

Android 按下home键后,DialogFragment将丢失或隐藏

Android 按下home键后,DialogFragment将丢失或隐藏,android,android-fragments,android-alertdialog,android-dialogfragment,android-dialog,Android,Android Fragments,Android Alertdialog,Android Dialogfragment,Android Dialog,我正在显示一个不可取消的dialogFragment。但当我按下home按钮或锁定屏幕并返回应用程序时,对话框片段消失。之后,我可以单击后退按钮,当我单击后退按钮并再次返回应用程序时,对话框片段再次出现 private void showRoutePauseDialog() { FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); Fragment prev

我正在显示一个不可取消的dialogFragment。但当我按下home按钮或锁定屏幕并返回应用程序时,对话框片段消失。之后,我可以单击后退按钮,当我单击后退按钮并再次返回应用程序时,对话框片段再次出现

private void showRoutePauseDialog() {

    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag(RouteActivityPausedDialogFragment.TAG);
    if (prev != null) {
        ft.remove(prev);
    }
    ft.commit();

    routeActivityPausedDialogFragment = new RouteActivityPausedDialogFragment();
    routeActivityPausedDialogFragment.setListener(this);
    routeActivityPausedDialogFragment.setCancelable(false);
    routeActivityPausedDialogFragment.show(getActivity().getSupportFragmentManager(), RouteActivityPausedDialogFragment.TAG);
}

这只发生在这个对话框片段上。我在这个片段中还有其他的片段,它们工作得很好。。。我还注意到,如果我显示另一个dialogFragment(工作正常的),然后按home并返回到应用程序,然后显示RouteActivityPausedDialogFragment并按home并返回,那么这个dialogFragment也工作正常…

也许你可以使用一个布尔标志,你可以将其存储在SharedReferences中。因此,每次你的活动出现在前台时,检查该标志并相应地再次执行setCancelable(false)。这与cancelable无关。问题是,当我按home按钮返回应用程序后,对话框不会显示。因此,请尝试从onResume()调用该对话框片段,因此,在您的活动返回前台后,它将再次显示。看,问题是如果我在此dialogFragment之前显示另一个dialogFragment,那么在我按下home按钮并返回应用程序后,此dialogFragment将显示(它正确显示),但是如果我没有在这个dialogFragment之前显示另一个dialogFragment,那么这个dialogFragment在我从主页返回按钮后就不会显示。因此,如果我在onResume中显示dialogFragment,在第一种情况下,dialogFragment将显示2次,在第二种情况下,它将显示1次(现在也是正确的),我遇到了相同的问题。解决这个问题有没有运气?