首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在NoBar.FullScreen活动中显示材料警报对话框

无法在NoBar.FullScreen活动中显示材料警报对话框
EN

Stack Overflow用户
提问于 2021-02-04 17:26:07
回答 2查看 1K关注 0票数 0

在这里,在我的全屏活动中,当我试图显示MaterialAlertDialog时,我会得到以下错误。

误差

代码语言:javascript
运行
复制
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jlplayer/Activity.PlayerActivity}: java.lang.IllegalArgumentException: com.google.android.material.dialog.MaterialAlertDialogBuilder requires a value for the com.example.jlplayer:attr/colorSurface attribute to be set in your app theme. You can either set the attribute in your theme or update your theme to inherit from Theme.MaterialComponents (or a descendant).
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
        at android.app.ActivityThread.-wrap12(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
        at android.os.Handler.dispatchMessage(Handler.java:108)
        at android.os.Looper.loop(Looper.java:166)
        at android.app.ActivityThread.main(ActivityThread.java:7529)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
     Caused by: java.lang.IllegalArgumentException: com.google.android.material.dialog.MaterialAlertDialogBuilder requires a value for the com.example.jlplayer:attr/colorSurface attribute to be set in your app theme. You can either set the attribute in your theme or update your theme to inherit from Theme.MaterialComponents (or a descendant).
        at com.google.android.material.resources.MaterialAttributes.resolveOrThrow(MaterialAttributes.java:69)
        at com.google.android.material.color.MaterialColors.getColor(MaterialColors.java:64)
        at com.google.android.material.dialog.MaterialAlertDialogBuilder.<init>(MaterialAlertDialogBuilder.java:120)
        at Activity.PlayerActivity.initializePlayer(PlayerActivity.java:336)
        at Activity.PlayerActivity.onStart(PlayerActivity.java:258)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1339)
        at android.app.Activity.performStart(Activity.java:7403)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411) 
        at android.app.ActivityThread.-wrap12(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994) 
        at android.os.Handler.dispatchMessage(Handler.java:108) 
        at android.os.Looper.loop(Looper.java:166) 
        at android.app.ActivityThread.main(ActivityThread.java:7529) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921) 

这里是我如何显示警报对话框

代码语言:javascript
运行
复制
     new MaterialAlertDialogBuilder(PlayerActivity.this, R.style.MyAlertDialogMaterial)
                .setTitle("Test")
                .setMessage("Resume playback ")
                .setNegativeButton("Cancel", (dialog, which) -> {
                    player.seekTo(playListId, 0);
                    player.setPlayWhenReady(true);
                })
                .setPositiveButton("Resume", (dialog, which) -> {
                    player.seekTo(playListId, startPosition);
                    player.setPlayWhenReady(true);
                }).create().show();

这只是一个简单的警报对话框显示,但我得到了以上错误。我尝试将colorSurface添加到AppTheme中,这会导致其他活动出现多个错误。

,那么我如何显示MaterialAlertDialog

Manifest.xml

代码语言:javascript
运行
复制
android:theme="@style/Theme.AppCompat.Light.NoBar.FullScreen">

风格

代码语言:javascript
运行
复制
<style name="Theme.AppCompat.Light.NoBar.FullScreen" parent="@style/Theme.AppCompat.Light">
    <!-- Full screen theme -->
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

如果我尝试MaterialComponents,我就会得到这个错误

代码语言:javascript
运行
复制
<style name="Theme.AppCompat.Light.NoBar.FullScreen" parent="@style/Theme.MaterialComponents.Light">
        <!-- Full screen theme -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

误差

代码语言:javascript
运行
复制
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jlplayer/Activity.PlayerActivity}: android.view.InflateException: Binary XML file line #94: Binary XML file line #52: Error inflating class Button
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
        at android.app.ActivityThread.-wrap12(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
        at android.os.Handler.dispatchMessage(Handler.java:108)
        at android.os.Looper.loop(Looper.java:166)
        at android.app.ActivityThread.main(ActivityThread.java:7529)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
     Caused by: android.view.InflateException: Binary XML file line #94: Binary XML file line #52: Error inflating class Button
     Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class Button
     Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f0401ac a=4}
        at android.content.res.TypedArray.getColorStateList(TypedArray.java:569)
        at android.widget.TextView.<init>(TextView.java:1291)
        at android.widget.Button.<init>(Button.java:172)
        at android.widget.Button.<init>(Button.java:147)
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:74)
        at com.google.android.material.button.MaterialButton.<init>(MaterialButton.java:224)
        at com.google.android.material.button.MaterialButton.<init>(MaterialButton.java:220)
        at com.google.android.material.theme.MaterialComponentsViewInflater.createButton(MaterialComponentsViewInflater.java:43)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:123)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:783)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:877)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1006)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:870)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696)
        at androidx.appcompat.app.AppCompatDialog.setContentView(AppCompatDialog.java:95)
        at androidx.appcompat.app.AlertController.installContent(AlertController.java:232)
        at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:528)
        at android.app.Dialog.show(Dialog.java:389)
        at Activity.PlayerActivity.initializePlayer(PlayerActivity.java:351)
        at Activity.PlayerActivity.onStart(PlayerActivity.java:259)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1339)
        at android.app.Activity.performStart(Activity.java:7403)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
        at android.app.ActivityThread.-wrap12(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
2021-02-05 16:30:13.666 3666-3666/com.example.jlplayer E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:108)
        at android.os.Looper.loop(Looper.java:166)
        at android.app.ActivityThread.main(ActivityThread.java:7529)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
EN

Stack Overflow用户

回答已采纳

发布于 2021-02-04 17:51:06

使用自定义对话框而不是材料,但如果您想使用

请参考这张

https://material.io/components/dialogs/android#theming-dialogs

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66050720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档