android警报对话框错误

Posted

技术标签:

【中文标题】android警报对话框错误【英文标题】:android alertdialog error 【发布时间】:2012-02-07 03:00:17 【问题描述】:

当我尝试显示警报对话框时,我得到以下 logcat:

01-04 10:14:06.440: 错误/androidRuntime(5993): 致命异常: main android.content.res.Resources$NotFoundException:来自可绘制资源 ID #0x108022c 的文件 res/drawable-mdpi/dialog_top_holo_dark.9.png 在 android.content.res.Resources.loadDrawable(Resources.java:1942) 在 android.content.res.Resources.getDrawable(Resources.java:664) 在 android.view.View.setBackgroundResource(View.java:11695) 在 com.android.internal.app.AlertController.setBackground(AlertController.java:659) 在 com.android.internal.app.AlertController.setupView(AlertController.java:429) 在 com.android.internal.app.AlertController.installContent(AlertController.java:241) 在 android.app.AlertDialog.onCreate(AlertDialog.java:336) 在 android.app.Dialog.dispatchOnCreate(Dialog.java:353) 在 android.app.Dialog.show(Dialog.java:257) 在 android.app.AlertDialog$Builder.show(AlertDialog.java:932) 在 com.sms.MyActivity$3.onClick(MyActivity.java:180) 在 android.view.View.performClick(View.java:3511) 在 android.view.View$PerformClick.run(View.java:14105) 在 android.os.Handler.handleCallback(Handler.java:605) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4424) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.io.FileNotFoundException: res/drawable-mdpi/dialog_top_holo_dark.9.png 在 android.content.res.AssetManager.openNonAssetNative(本机方法) 在 android.content.res.AssetManager.openNonAsset(AssetManager.java:407) 在 android.content.res.Resources.loadDrawable(Resources.java:1934) ... 21 更多

谁能指出我正确的方向,到目前为止,谷歌搜索已被证明是徒劳的..

【问题讨论】:

【参考方案1】:

这里的关键是行:android.content.res.Resources$NotFoundException: File res/drawable-mdpi/dialog_top_holo_dark.9.png from drawable resource ID #0x108022c1。这意味着运行时编译器找不到合适的文件dialog_top_holo_dark.9.png

现在,它正在查看您的 /res/drawable-mdpi/ 文件夹。如果它没有默认回到res/drawable/,这意味着经常 检测到该名称的文件,但读取文件时出错。这意味着您需要按此顺序执行这些操作。

    首先,确保您的可绘制文件夹中有一个文件名dialog_top_holo_dark.9.png

    其次,确保文件以.9.png 扩展名结尾。

    如果文件确实存在,但有一个红色 X 标记错误:在图形编辑器中打开文件并重新保存同名文件。

    李>

    如果这不能消除红色 X,请清理您的项目。在 Eclipse 中,这是通过单击菜单中的 Project -> Clean 来完成的。

    如果这仍然不能解决问题,您可能需要从头开始重新制作文件。

如果您从文件系统或其他项目导入 .png.9.png,有时会发生这种情况。 Eclipse 和 Android SDK 并不总是正确地抓取和复制文件。我在许多图形文件中都发生过这种情况。只要我按照上述步骤操作,该项目中该文件的问题就会永久解决。

希望这会有所帮助,

模糊逻辑

【讨论】:

我没有该名称的文件没有导入该名称的任何文件。我正在使用 Holo 主题,该文件不应该包含在其中吗? 是的,应该,但它会在您引用的 API 特定包中。您实际上可以搜索包并确保它包含在内。我会为您进行编辑。【参考方案2】:

您只需要正确检查日志,很明显它无法找到 dialog_top_holo_dark.9.png,您是否将该文件放在正确的资源文件夹中。

还有一件事,如果您将文件放在正确的位置,只需提供干净的构建,有时更改不会反映,所以最好提供干净的构建。

【讨论】:

以上是关于android警报对话框错误的主要内容,如果未能解决你的问题,请参考以下文章

自定义警报对话框android

使用警报对话框android的颜色ListView项目

如何在正在运行的线程中显示警报对话框?

如何更改警报对话框标题分隔线颜色android

如何在android中为警报对话框设置自定义字体?

从警报对话框中删除黑色背景 - Android