为什么我的应用尝试使用drawable-mdpi / title_bar_shadow.9.png?

时间:2011-04-20 11:41:10

标签: android android-layout

该应用程序在HPDI和MDPI上运行良好,但在LDPI(v2.0)模拟器中运行时,我会在下面获得异常和堆栈跟踪。

为什么要寻找这张图片? (它在我的应用程序中未引用,我已经检查过)。在任何情况下,启动器活动都禁用了标题栏。

如果操作系统需要此图像,为什么不存在?

当仿真器是LDPI时,为什么与MPDI映像有关的异常?

04-20 11:35:19.432: ERROR/AndroidRuntime(236): Uncaught handler: thread main exiting due to uncaught exception
04-20 11:35:19.502: ERROR/AndroidRuntime(236): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spondle/com.spondle.EventsActivity}: android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2454)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
        at android.app.ActivityThread.access$2200(ActivityThread.java:119)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4310)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class <unknown>
        at android.view.LayoutInflater.createView(LayoutInflater.java:513)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
        at android.app.Activity.setContentView(Activity.java:1622)
        at com.spondle.EventsActivity.onCreate(EventsActivity.java:38)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
        ... 11 more
        Caused by: java.lang.reflect.InvocationTargetException
        at android.widget.ImageView.<init>(ImageView.java:105)
        at java.lang.reflect.Constructor.constructNative(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
        at android.view.LayoutInflater.createView(LayoutInflater.java:500)
        ... 23 more
        Caused by: android.content.res.Resources$NotFoundException: File res/drawable-mdpi/title_bar_shadow.9.png from drawable resource ID #0x7f02002a
        at android.content.res.Resources.loadDrawable(Resources.java:1710)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
        at android.widget.ImageView.<init>(ImageView.java:115)
        ... 27 more
        Caused by: java.io.FileNotFoundException: res/drawable-mdpi/title_bar_shadow.9.png
        at android.content.res.AssetManager.openNonAssetNative(Native Method)
        at android.content.res.AssetManager.openNonAsset(AssetManager.java:391)
        at android.content.res.Resources.loadDrawable(Resources.java:1702)
        ... 29 more

2 个答案:

答案 0 :(得分:3)

如果操作系统需要此图像,为什么不存在?

当模拟器是LDPI时,为什么与MPDI图像有关的异常?

如果drawable-ldpi中没有请求的资源(title_bar_shadow.9.png)(并且直到Android 2.3),Android将尝试找到最佳匹配(drawable-mdpi将是下一个文件夹搜索)。无论如何,该文件也不会在那里找到(再次,它直到Android 2.3才出现)。所以下一步是在drawable-hdpi(可以找到它)中搜索它。但显然搜索停止在drawable-mdpi上(这很奇怪......也许是Android 2.1中的一个错误?你可以试用Android 2.2模拟器)

为什么要寻找这张图片? (它在我的应用程序中未引用,我已经检查过)。起始活动在任何情况下都禁用了标题栏。

标题栏不使用此图像(阴影)。它显示在标题栏下方。 为了让它消失,你必须创建自己的主题,如下所示:

<style
  name="Theme"
  parent="android:Theme.NoTitleBar">
  <item
    name="android:windowContentOverlay">@null</item>
</style>

答案 1 :(得分:2)

我解决了这个问题,将drawable-ldpi / mdip / hdpi中的图像副本复制到drawable(只能绘制)文件夹。在此文件夹中输入您的低分辨率图像。

您无需在这些文件夹上添加title_bar_shadow.9.png文件。