旋转时对话框消失

时间:2013-12-18 22:04:44

标签: android

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

 public class AboutDialog extends Dialog {
    ...
 ?

 ...
 AboutDialog dlg = new AboutDialog(ctx);
 dlg.show();

我的应用有两项活动。关于菜单项在两个活动中均可用。

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

我没有任何逻辑可以在旋转时启动对话框。该框架使这种情况自动发生。

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

1 个答案:

答案 0 :(得分:1)

对话框将关闭,因为在屏幕方向更改时重新创建活动。在清单中为您的活动添加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,而不仅仅是普通的Activity,以使其发挥作用。