0

I have an runtime error: "java.lang.UnsupportedOperationException: Can't convert value at index 1 to dimension: type=0x1d" after switching from 'com.android.tools.build:gradle:2.3.3' to 3.0.1. No other changes.
If I put old

 dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
}

everything works ok. Strange!
Full stacktrace:

android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.mobidevelop.spl.widget.SplitPaneLayout
Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class com.mobidevelop.spl.widget.SplitPaneLayout
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.ashomok.imagetotext.ocr_result.tab_fragments.TextFragment.onCreateView(TextFragment.java:66)
at android.app.Fragment.performCreateView(Fragment.java:2611)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1276)
at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2415)
at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2194)
at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2148)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2049)
at android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:798)
at android.support.v13.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:151)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1236)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1084)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714)
at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:91)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1361)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:784)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22002)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721)
at android.view.View.measure(View.java:22002)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1498)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 1 to dimension: type=0x1d
at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:730)
at com.mobidevelop.spl.widget.SplitPaneLayout.extractAttributes(SplitPaneLayout.java:86)
at com.mobidevelop.spl.widget.SplitPaneLayout.<init>(SplitPaneLayout.java:74)
... 63 more

Test running failed: Instrumentation run failed due to 'Process crashed.'

Problem xml file:

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

<com.mobidevelop.spl.widget.SplitPaneLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:spl="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    spl:orientation="vertical"
    spl:splitterBackground="@color/colorAccent"
    spl:splitterPosition="33%"
    spl:splitterSize="12dp"
    android:id="@+id/split_pane_layout">

    <include layout="@layout/split_pane_content" />
</com.mobidevelop.spl.widget.SplitPaneLayout>

decompiled source code:

public class SplitPaneLayout extends ViewGroup {
//...
    private void extractAttributes(Context context, AttributeSet attrs) {
            if (attrs != null) {
                TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SplitPaneLayout);
                mOrientation = a.getInt(R.styleable.SplitPaneLayout_orientation, 0);
                //next line gives ERROR!
                mSplitterSize = a.getDimensionPixelSize(R.styleable.SplitPaneLayout_splitterSize, context.getResources().getDimensionPixelSize(R.dimen.spl_default_splitter_size)); //ERROR HERE

dimens.xml contains all data and without errors. Any ideas?

Yuliia Ashomok
  • 8,336
  • 2
  • 60
  • 69
  • can you provide your app dependencies to check how you implement this lib? –  Nov 25 '17 at 06:20

1 Answers1

1

it's late but here's how I got it to work.

Gradle The problem is that the newer gradle version somehow get confused and could not find the dimension value. So I ended up forking my own version, cloned it, updated Gradle, complier, fixing issues along the way ... and add it as a library from local project following this guide.

If you do that, is should be fixed, or you can clone my fixed version. If error arises, try commenting out the apply:from: line in the library's gradle file.

AnT
  • 801
  • 9
  • 9