Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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 对话框在旋转时消失_Android - Fatal编程技术网

Android 对话框在旋转时消失

Android 对话框在旋转时消失,android,Android,在我的应用程序中,我有一个自定义对话框,通过用户单击“关于”菜单项调用该对话框 public class AboutDialog extends Dialog { ... ? ... AboutDialog dlg = new AboutDialog(ctx); dlg.show(); 我的应用程序有两个活动。关于菜单项在两个活动中都可用 在第一个活动中,如果在显示对话框时旋转设备,则该对话框将继续显示。但是,在第二个活动中,对话框在旋转时消失 我没有任何逻辑来轮流打开对话

在我的应用程序中,我有一个自定义对话框,通过用户单击“关于”菜单项调用该对话框

 public class AboutDialog extends Dialog {
    ...
 ?

 ...
 AboutDialog dlg = new AboutDialog(ctx);
 dlg.show();
我的应用程序有两个活动。关于菜单项在两个活动中都可用

在第一个活动中,如果在显示对话框时旋转设备,则该对话框将继续显示。但是,在第二个活动中,对话框在旋转时消失

我没有任何逻辑来轮流打开对话框。该框架自动实现了这一点


我想知道是否有人想过为什么对话框会在第二个活动中消失。

对话框将关闭,因为活动是在屏幕方向更改时重新创建的。在清单中的活动上添加android:configChanges=“orientation”可能能够解决问题,但不建议这样做。最好的解决方案是使用fragmentDialog。下面是一个调用片段对话框的示例:

private void showFragmentDialog() {
        FragmentManager fm = getChildFragmentManager(); //THIS IS USED WHEN YOU ARE NOT INSIDE AN ACTIVITY FRAGMENT else use getFragmentManager
        DialogFragmentName dialog_fragment = new DialogFragmentName();
        dialog_fragment.show(fm, "dialog_fragment");
    }
这将是您的FragmentDialog类:

public class DialogFragmentName extends DialogFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.YOUR_DIALOG_LAYOUT, container);
        //SETUP YOUR VIEWS HERE E.G.:
        //Button btn = (Button) view.findViewById(R.id.VIEW_ID);

        return view;
    }
}

并将扩展更改为FragmentActivity,而不仅仅是一个普通的活动,以实现此功能。

Dialogfragment现在使此操作更容易,并且是创建对话框的推荐方法。