Android 包含片段的AppCompat样式对话框
我想要一个AppCompat样式的对话框——背景、标题、按钮位置、按钮色调等——包含一个片段 使用自定义的Android 包含片段的AppCompat样式对话框,android,android-fragments,android-appcompat,android-dialog,appcompatdialog,Android,Android Fragments,Android Appcompat,Android Dialog,Appcompatdialog,我想要一个AppCompat样式的对话框——背景、标题、按钮位置、按钮色调等——包含一个片段 使用自定义的DialogFragmentonCreateDialog()可以返回一个AppCompatDialog,然后在onCreateView()中可以扩展一个新布局,并且可以使用childFragmentManager将占位符视图替换为片段。但结果对话框是一个没有按钮的空框。它们可以手动添加到对话框的布局中,但无法从AppCompat获得样式 如果使目标片段扩展到DialogFragment,则同
DialogFragment
onCreateDialog()
可以返回一个AppCompatDialog
,然后在onCreateView()
中可以扩展一个新布局,并且可以使用childFragmentManager
将占位符视图替换为片段。但结果对话框是一个没有按钮的空框。它们可以手动添加到对话框的布局中,但无法从AppCompat获得样式
如果使目标片段扩展到DialogFragment,则同样适用
要获取AppCompat按钮,您可以使用AlertDialog.Builder
,并使用.setView()
设置布局,但我找不到将片段设置为内容的方法。如果从onCreateDialog()
尝试childFragmentManager.beginTransaction().replace()
,则会得到:
java.lang.IllegalStateException: Fragment does not have a view
android.util.AndroidRuntimeException: Window feature must be requested before adding content
at android.support.v7.app.AppCompatDelegateImplV7.throwFeatureRequestIfSubDecorInstalled(AppCompatDelegateImplV7.java:1479)
这似乎是因为,即使在使用了builder.setView()
或dialog.create()
之后,dialog.setView()
,onCreateView()
和getView()
始终返回空值
这里的第二个答案似乎相当全面地涵盖了这一点,但并没有提出一个有利的解决方案:
如果覆盖onCreateView()
或getView()
以返回已充气的视图,则会得到:
java.lang.IllegalStateException: Fragment does not have a view
android.util.AndroidRuntimeException: Window feature must be requested before adding content
at android.support.v7.app.AppCompatDelegateImplV7.throwFeatureRequestIfSubDecorInstalled(AppCompatDelegateImplV7.java:1479)
为什么不直接使用?