Android:在 MaterialTheme 中使用自定义样式的 AlertDialog 抛出资源未找到异常
Android: AlertDialog with custom style in MaterialTheme throws resource not found exception
我有主题Theme.MaterialComponents.Light.NoActionBar
在我的样式中作为主要的 Apptheme。
我的提醒主题是
<style name="MyDialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
<item name="android:windowBackground">@drawable/alert_bg</item>
<item name="android:textColor">@color/text</item>
</style>
我这样构建我的提醒对话
AlertDialog.Builder builder = new AlertDialog.Builder(AllowanceActivity.this, R.style.MyDialogTheme);
当我 运行 它没有样式时它 运行 是正确的但是如果我使用任何其他样式它会崩溃我已经尝试过所有扩展警报的主题 Theme.AppCompat.Light.Dialog.Alert
Theme.AppCompat.Dialog.Alert
和 Theme.MaterialComponents.Dialog.Alert
但我总是得到错误。
android.content.res.Resources$NotFoundException: Resource ID #0x7f07005d
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2462)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2522)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5471)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f07005d
at android.content.res.Resources.getValue(Resources.java:1432)
at android.content.res.Resources.getValue(Resources.java:1412)
at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:411)
at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at androidx.appcompat.app.AppCompatDelegateImpl.attachToWindow(AppCompatDelegateImpl.java:637)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:311)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:272)
at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:232)
at androidx.appcompat.app.AppCompatDialog.getDelegate(AppCompatDialog.java:170)
at androidx.appcompat.app.AppCompatDialog.<init>(AppCompatDialog.java:59)
at androidx.appcompat.app.AlertDialog.<init>(AlertDialog.java:98)
at androidx.appcompat.app.AlertDialog$Builder.create(AlertDialog.java:983)
有没有人遇到同样的问题或者我遗漏了什么
使用 MaterialAlertDialogBuilder 配置具有 Material 规格和主题的实例化 AlertDialog
。
类似于:
new MaterialAlertDialogBuilder(context,
R.style.MyThemeOverlay_MaterialComponents_MaterialAlertDialog)
.setTitle("Dialog")
//...
.show();
也使用这种父样式ThemeOverlay.MaterialComponents.MaterialAlertDialog
。
我有主题Theme.MaterialComponents.Light.NoActionBar
在我的样式中作为主要的 Apptheme。
我的提醒主题是
<style name="MyDialogTheme" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
<item name="android:windowBackground">@drawable/alert_bg</item>
<item name="android:textColor">@color/text</item>
</style>
我这样构建我的提醒对话
AlertDialog.Builder builder = new AlertDialog.Builder(AllowanceActivity.this, R.style.MyDialogTheme);
当我 运行 它没有样式时它 运行 是正确的但是如果我使用任何其他样式它会崩溃我已经尝试过所有扩展警报的主题 Theme.AppCompat.Light.Dialog.Alert
Theme.AppCompat.Dialog.Alert
和 Theme.MaterialComponents.Dialog.Alert
但我总是得到错误。
android.content.res.Resources$NotFoundException: Resource ID #0x7f07005d
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2462)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2522)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5471)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f07005d
at android.content.res.Resources.getValue(Resources.java:1432)
at android.content.res.Resources.getValue(Resources.java:1412)
at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:411)
at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at androidx.appcompat.app.AppCompatDelegateImpl.attachToWindow(AppCompatDelegateImpl.java:637)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:311)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:272)
at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:232)
at androidx.appcompat.app.AppCompatDialog.getDelegate(AppCompatDialog.java:170)
at androidx.appcompat.app.AppCompatDialog.<init>(AppCompatDialog.java:59)
at androidx.appcompat.app.AlertDialog.<init>(AlertDialog.java:98)
at androidx.appcompat.app.AlertDialog$Builder.create(AlertDialog.java:983)
有没有人遇到同样的问题或者我遗漏了什么
使用 MaterialAlertDialogBuilder 配置具有 Material 规格和主题的实例化 AlertDialog
。
类似于:
new MaterialAlertDialogBuilder(context,
R.style.MyThemeOverlay_MaterialComponents_MaterialAlertDialog)
.setTitle("Dialog")
//...
.show();
也使用这种父样式ThemeOverlay.MaterialComponents.MaterialAlertDialog
。