Диалог предупреждения о материале, стиль этого компонента требует, чтобы тема вашего приложения была Theme.AppCompat - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать MaterialAlertDialog, но продолжаю получать следующую ошибку, независимо от того, что

 java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
        at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:243)
        at com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:213)
        at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:148)
        at com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:76)
        at com.google.android.material.dialog.MaterialDialogs.getDialogBackgroundInsets(MaterialDialogs.java:60)
        at com.google.android.material.dialog.MaterialAlertDialogBuilder.<init>(MaterialAlertDialogBuilder.java:117)
        at com.google.android.material.dialog.MaterialAlertDialogBuilder.<init>(MaterialAlertDialogBuilder.java:103)
        at com.adamm.quem.MainActivity$1.onItemClick(MainActivity.java:118)

Я использую пользовательскую тему в качестве темы MainActivity, которая является родительской для MaterialComponents

<style name="MainMaterialTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

Изменение темы на AppCompat не помогает и не совсем правильно. Я слежу за реализацией, как объясняет материал IO https://material.io/develop/android/components/dialog/

Мой код:

AlertDialog.Builder builder = new MaterialAlertDialogBuilder(getApplicationContext())
                            .setTitle("Title")
                            .setMessage("Message")
                    builder.show();

Как это можно исправить?

1 Ответ

2 голосов
/ 08 апреля 2020

Вы передаете getApplicationContext(), и в контексте приложения нет вашей темы. Передайте свою деятельность в качестве контекста:

AlertDialog.Builder builder = new MaterialAlertDialogBuilder(MainActivity.this)
    .setTitle("Title")
    .setMessage("Message")
builder.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...