android - 对话框在旋转时消失

标签 android

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

 public class AboutDialog extends Dialog {
    ...
 ?

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

我的应用有两个 Activity 。关于菜单项在两个 Activity 中都可用。

在第一个 Activity 中,如果在显示对话框时旋转设备,它会继续保持显示状态。然而,在第二个 Activity 中,对话框在旋转时消失了。

我没有任何逻辑可以轮换显示对话框。该框架使这一切自动发生。

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

最佳答案

对话框将关闭,因为 Activity 在屏幕方向更改时重新创建。在 list 中的 Activity 中添加 android:configChanges="orientation" 可能能够解决问题,但不推荐这样做。最好的解决方案是使用 fragmentDialog。下面是调用 fragment 对话框的示例:

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 以使其工作。

关于android - 对话框在旋转时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669396/

相关文章:

android - boost C++ 和 Android 3

android - 为 Flutter 项目添加 Android 运行/调试配置

android - 由于 strings.xml 中的重复条目,Gradle 构建失败

android - ListView 中的 setOnItemClickListener 影响多行

android - 增加Android模拟器的存储空间? (安装错误 : INSTALL_FAILED_INSUFFICIENT_STORAGE)

java - 发现类型不匹配 : Required: Context,:Intent

android - 模块 'app' : platform 'android-28' not found , 安卓工作室 3.6.3

java - 在 appcompat-v7 :23. 0.0 中 Snackbar 触摸或滑动时出现 NullPointerException

Android 读取手机状态?

java - 将 ArrayList 从 Activity 发送到 Fragment?