android - 如何修复资源未找到异常?

标签 android xml seekbar

在 Android Studio (3.1.2) 中工作时,我有一个应用程序最初创建为在 InstantApp 管理器下运行。 我相信这就是将其分为 3 个主要目录的原因:app、base、feature。

注意:突出显示相关文件...
enter image description here

无论如何,问题是找不到资源。

我正在尝试自定义一个 SeekBar 并使用渐变形状作为背景。在 feature.res.values.style.xml 中:

<?xml version="1.0" encoding="utf-8"?>

<style name="alphaSliderStyle" parent="@android:style/Widget.SeekBar">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@drawable/alpha_progress</item>
</style>

我的理解是 alpha_progress.xml 文件应该在 feature.res.drawable 下。但是,在运行该应用程序时,一旦显示自定义 SeekBar 的 View 被实例化,我就会得到以下内容(摘录):

05-13 10:19:05.641 7962-7962/com.razorware.cloudcard.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.razorware.cloudcard.app, PID: 7962
android.view.InflateException: Binary XML file line #186: Binary XML file line #186: Error inflating class SeekBar
Caused by: android.view.InflateException: Binary XML file line #186: Error inflating class SeekBar
Caused by: android.content.res.Resources$NotFoundException: Drawable com.razorware.cloudcard.app:drawable/alpha_progress with resource ID #0x7f08005b
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/alpha_progress.xml from drawable resource ID #0x7f08005b
    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:729)
    at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:575)
    at android.content.res.Resources.loadDrawable(Resources.java:858)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
    at android.widget.ProgressBar.<init>(ProgressBar.java:290)
    at android.widget.AbsSeekBar.<init>(AbsSeekBar.java:94)
    at android.widget.SeekBar.<init>(SeekBar.java:85)
    at android.widget.SeekBar.<init>(SeekBar.java:81)
    at android.support.v7.widget.AppCompatSeekBar.<init>(AppCompatSeekBar.java:47)
    at android.support.v7.widget.AppCompatSeekBar.<init>(AppCompatSeekBar.java:43)
    at android.support.v7.app.AppCompatViewInflater.createSeekBar(AppCompatViewInflater.java:238)
    at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:149)
    at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1035)
    at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1092)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:861)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
    at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:412)
    at android.app.Dialog.setContentView(Dialog.java:532)
    at com.razorware.cloudcard.feature.visuals.ColorEditorDialog.initializeComponents(ColorEditorDialog.java:171)
    at com.razorware.cloudcard.feature.visuals.ColorEditorDialog.<init>(ColorEditorDialog.java:67)
    at com.razorware.cloudcard.feature.presentation.CloudCardPresenter$4.onClick(CloudCardPresenter.java:66)
    at android.view.View.performClick(View.java:5640)
    at android.view.View$PerformClick.run(View.java:22455)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6196)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4: <bitmap> requires a valid 'src' attribute
    at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:787)
    at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:747)
05-13 10:19:05.642 7962-7962/com.razorware.cloudcard.app E/AndroidRuntime:     at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227)
        at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:285)
        at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:196)
        at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:719)
            ... 42 more

相关位似乎是:

Caused by: android.content.res.Resources$NotFoundException: Drawable com.razorware.cloudcard.app:drawable/alpha_progress with resource ID #0x7f08005b
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/alpha_progress.xml from drawable resource ID #0x7f08005b

...特别是它正在查找 app.res.drawable 位置(如果我理解正确的话)。

就其值(value)而言,以下是另外两个相关drawables的内容:

// alpha_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <bitmap android:src="@drawable/alpha_color_sample" />
    </item>
</layer-list>

// alpha_color_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<shape  xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:id="@+id/colorSample"
    android:layout_width="135dp"
    android:layout_height="45dp">

    <gradient android:angle="90"
        android:startColor="#FFFFFFFF"
        android:endColor="#00FFFFFF" />
</shape>

最佳答案

Caused by: android.content.res.Resources$NotFoundException: Drawable com.razorware.cloudcard.app:drawable/alpha_progress with resource ID #0x7f08005b
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/alpha_progress.xml from drawable resource ID #0x7f08005b

Resources.NotFoundException

This exception is thrown by the resource APIs when a requested resource can not be found.

你应该设置 android:drawable item 部分。

<item android:id="@android:id/background"
     android:drawable="@drawable/alpha_color_sample">
 </item>

我假设 <bitmap android:src 产生问题是因为, alpha_color_sample 不是有效的位图

更改后 Clean-Rebuild-Run .

关于android - 如何修复资源未找到异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50317950/

相关文章:

xml - 使用 perl 创建的数据库存储为 xml

android - 在 Android 中实现一个 slider (SeekBar)

Android: 不可见的 Seekbar Thumb 在 Seekbar 中离开 "Hole"

java - 停止闹钟 [android 应用程序]

android - 如何检查我的设备是否能够正确呈现表情符号图像?

android - 如何显示自定义拖动阴影而不是 ListView fragment 行?

android - 使用 XML 填充 SQLite 并集成到 Activity 内部

javascript - 使用带有 jquery 的 attr() 保持大写(区分大小写)

java - 设置颜色搜索栏

java - 安全/加密蓝牙连接