android - 使用 AlertDialog.Builder 时防止 StatusBar 显示

标签 android android-fragments

在我的 MainActivityXML 中,我对其进行了编程,以便它使用一个带有 NoActionBar 的主题因此没有显示操作栏。但是,每当我想显示一个对话框时,我都会调用一个使用 AlertDialog.BuilderDialogFragments 来创建对话框。当我从主要 Activity 中显示对话框时,它会显示带有 ActionBar 的对话框。 当我随后关闭对话框时,操作栏仍然存在

问题:如何保持一致性并在 fragment 消失时隐藏操作栏,或者让它首先不显示?

我曾尝试创建自定义样式,然后将其包装在 ContextThemeWrapper 中,但无济于事。

getActionBar().hide()getSupportActionBar().hide() 在主 Activity 和 fragment 上都返回 null。

MainActivity 中的

myDialog.getDialog()(在调用 .show() 之前)返回 null

我用来创建 AlertDialog.Builder 的代码在 DialogFragmentonCreateDialog 中:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     builder.setTitle(R.string.delete_confirmation)
            .setItems(fileSequence, new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int which)
                {
                    File loadedFile = fileFullArray.get(which);

                    boolean deleted = loadedFile.delete();

                    if (deleted)
                        Toast.makeText(getActivity().getApplicationContext(), "File deleted!", Toast.LENGTH_SHORT).show();
                }
            })
            .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog, int id)
                        {
                            // User cancelled the dialog
                        }
                    }
            );
    // Create the AlertDialog object and return it
    return builder.create();

编辑:

4 个月后回到这个问题,修复是在对话框的 onCreate() 中添加以下行:

this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Fragment 的onCreate() 被覆盖写在MainActivity 中。干杯。

最佳答案

对于 API 级别 17 及更高版本,请参阅 gprathour 的回答。

对于 API 级别 16 及更低级别,需要将以下行添加到我的对话框的 onCreate()

this.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

关于android - 使用 AlertDialog.Builder 时防止 StatusBar 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554599/

相关文章:

android - 如何同步 AudioRecord 和 AudioTrack

android - 如何在安卓游戏中实现计时器

android - 无法解决 github 存储库

android - java.lang.OutOfMemoryError : bitmap size exceeds VM budget 错误

java - 适配器不会更新

java - 如何修复 Unboxing 可能会在 firebase 中产生 nullPointer Exception?

java - 从 Activity 中打开 fragment 并膨胀 View

android - 在多项 Activity 中留下 slider 的最佳方法应该是什么

android - 检测 fragment 主视图的测量传递何时完成(或 Android 等效的 viewDidLayoutSubviews)

android - 从 viewpager 向后滑动会导致应用程序崩溃