包含片段的AppCompat样式对话框

时间:2015-06-19 18:28:38

标签: android android-fragments android-appcompat android-dialog appcompatdialog

我想要一个AppCompat风格的对话框 - 背景,标题,按钮位置,按钮色调等 - 包含片段。

使用自定义DialogFragment onCreateDialog()可以返回AppCompatDialog,然后在onCreateView()中可以对新布局进行夸大,并使用childFragmentManager替换占位符视图与片段。但是生成的对话框是一个没有按钮的空框。可以手动将它们添加到对话框的布局中,但它们不会从AppCompat中获得样式。

如果您使目标片段扩展DialogFragment,则同样适用。

要获取AppCompat按钮,您可以使用AlertDialog.Builder,并使用.setView()设置布局,但之后我无法找到将片段设置为内容的方法。如果您从childFragmentManager.beginTransaction().replace()尝试onCreateDialog(),那么您会得到:

 java.lang.IllegalStateException: Fragment does not have a view

这似乎是因为,即使在使用builder.setView()dialog.create()之后,dialog.setView()onCreateView()getView()也始终返回null。

这里的第二个答案似乎相当全面地涵盖了这一点,但并未提出有利的解决方案:https://stackoverflow.com/a/21418952/2645845

如果您覆盖onCreateView()getView()以返回您已膨胀的视图,则会获得:

 android.util.AndroidRuntimeException: Window feature must be requested before adding content
    at android.support.v7.app.AppCompatDelegateImplV7.throwFeatureRequestIfSubDecorInstalled(AppCompatDelegateImplV7.java:1479)

0 个答案:

没有答案