typedArry.getDrawable() returning null

-1

I am trying to access the drawable in code from xml file using attrib but somehow its not working, I have followed all the solutions available online. It is pertinent to mention that integer attrib is working without any problem.

abc drawable file

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- The middle layer is green circle.-->
    <item>
        <shape android:shape="oval">
            <size
                android:width="121px"
                android:height="120px" />
            <solid android:color="@color/white" />

        </shape>
    </item>
</layer-list>

layout file

<CustomSeekBar
            ...
            android:thumb="@drawable/controls_seekbar_thumb"
            app:thumbDownState="@drawable/controls_seekbar_thumb_pressed"
            app:tickCount="4" />

Code

    ...
    val typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomSeekBar)
    tickCount = typedArray.getInt(R.styleable.CustomSeekBar_tickCount, 0)
            thumbDownstate = typedArray.getDrawable(R.styleable.CustomSeekBar_thumbDownState)!!
            typedArray.recycle()
    ...

I have also tried calling var temp = typedArray.getResourceId(R.styleable.SmoothSeekBar_thumbDownState, -1) thumbDownstate = ContextCompat.getDrawable(context, temp)!!

attrib file

<declare-styleable name="CustomSeekBar">
        <attr name="tickCount" format="integer" />
        <attr name="thumbDownState" format="reference" />
    </declare-styleable>

From the look of it, everything is fine but still it doesnt work. Keep crashing the app. Help is highly appreciated. Thanks in advance.

Update Stacktrace

2018-12-14 00:07:55.944 11567-11567/com.emazdoor.ui E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.emazdoor.ui, PID: 11567
    android.view.InflateException: Binary XML file line #8: Binary XML file line #10: Error inflating class com.emazdoor.ui.utils.CustomSeekBar
    Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class com.emazdoor.ui.utils.CustomSeekBar
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
        at android.view.LayoutInflater.createView(LayoutInflater.java:656)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:798)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:738)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:869)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:832)
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1005)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:832)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
        at com.emazdoor.uiui.comfort.controls.temp.TempFragment.onCreateView(TempFragment.kt:42)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2646)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2416)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2372)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
        at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
        at android.os.Handler.handleCallback(Handler.java:761)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:156)
        at android.app.ActivityThread.main(ActivityThread.java:6623)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:255)
        at android.content.res.Resources.getValue(Resources.java:1353)
        at androidx.appcompat.widget.AppCompatDrawableManager.createDrawableIfNeeded(AppCompatDrawableManager.java:235)
        at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
        at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191)
        at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:102)
        at com.emazdoor.ui.utils.CustomSeekBar.<init>(CustomSeekbar.kt:47)
        at java.lang.reflect.Constructor.newInstance0(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:656) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:798) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:738) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:869) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:832) 
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:1005) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:865) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:832) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
        at com.emazdoor.ui.comfort.controls.temp.TempFragment.onCreateView(TempFragment.kt:42) 
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) 
        at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2646) 
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2416) 
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2372) 
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
        at androidx.fragment.app.FragmentManagerImpl$1.run(FragmentManager.java:733) 
        at android.os.Handler.handleCallback(Handler.java:761) 
        at android.os.Handler.dispatchMessage(Handler.java:98) 
        at android.os.Looper.loop(Looper.java:156) 
        at android.app.ActivityThread.main(ActivityThread.java:6623) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 
android
attributes
android-drawable
asked on Stack Overflow Dec 13, 2018 by Ahmed S. Durrani • edited Dec 13, 2018 by Ahmed S. Durrani

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0