Android 由DialogFragment创建的自定义对话框不显示对话框标题

Android 由DialogFragment创建的自定义对话框不显示对话框标题,android,kotlin,android-dialogfragment,Android,Kotlin,Android Dialogfragment,我已经创建了一个自定义错误对话框片段, 显示的对话框能够显示错误消息和按钮。 但是,标题不会显示在对话框上 class ErrorDialog(private val message: String): BaseMvcDialogFragment() { companion object { fun newInstance(message: String): ErrorDialog = ErrorDialog(message) } private la

我已经创建了一个自定义错误对话框片段, 显示的对话框能够显示错误消息和按钮。 但是,标题不会显示在对话框上

class ErrorDialog(private val message: String): BaseMvcDialogFragment() {

    companion object {
        fun newInstance(message: String): ErrorDialog = ErrorDialog(message)
    }

    private lateinit var errorController : ErrorController
    private lateinit var  dialogEventBus: DialogEventBus

    override fun onCreate(savedInstanceState: Bundle?) {
        errorController = compositionRoot.errorController
        super.onCreate(savedInstanceState)
        dialogEventBus = compositionRoot.dialogEventBus
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val viewMvc = compositionRoot.viewMvcFactory.errorViewMvcImpl(null)
        val dialog = Dialog(requireContext())
        dialog.setContentView(viewMvc.getRootView())
        dialog.setTitle("Oops something went wrong....")
        dialog.setCancelable(false)
        dialog.setCanceledOnTouchOutside(false)
        errorController.bindView(viewMvc, message, dialogEventBus)
        return dialog
    }

    override fun onStart() {
        super.onStart()
        errorController.onStart()
    }

    override fun onStop() {
        super.onStop()
        errorController.onStop()
    }
}
主题课

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.WeatherApp" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    </style>
</resources>

@颜色/紫色500
@颜色/紫色\u 700
@颜色/白色
@颜色/青色200
@颜色/青绿色700
@颜色/黑色
?attr/colorPrimaryVariant

我尝试通过添加自定义对话框主题来更改主题
这似乎不起作用

结果是,当您使用API大于23的设备时 该行默认为true

<item name="android:windowNoTitle">false</item>
false
为了解决这个问题,我必须对我的主题进行一些更改,如下所示

<style name="Theme.WeatherApp" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:dialogTheme">@style/DialogTheme</item>
</style>

<style name="DialogTheme" parent="@style/Theme.MaterialComponents.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
</style>

@风格/对话主题
假的

您还需要确保继承的是相同的父主题

也许您应该使用
AlertDialog
而不是
Dialog
,或者使用
onCreateView()
而不是
onCreateDialog()
。我已经尝试过使用onCreateView,这没有什么区别