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)
User contributions licensed under CC BY-SA 3.0