Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android Studio 2.0 Preview render exception #21

Closed
jon-adams opened this issue Apr 11, 2016 · 7 comments
Closed

Android Studio 2.0 Preview render exception #21

jon-adams opened this issue Apr 11, 2016 · 7 comments
Assignees
Labels

Comments

@jon-adams
Copy link

Since Android Studio 2.0, the progress bar throws an exception during rendering and blocks ALL of the views from showing in the preview (because of the exception).

(I think it has something to do with the animation code in the progress bar.)

java.lang.IllegalArgumentException: object is not an instance of declaring class   at java.lang.reflect.Method.invoke(Method.java:606)   at android.animation.PropertyValuesHolder_Delegate.callMethod(PropertyValuesHolder_Delegate.java:108)   at android.animation.PropertyValuesHolder_Delegate.nCallFloatMethod(PropertyValuesHolder_Delegate.java:145)   at android.animation.PropertyValuesHolder.nCallFloatMethod(PropertyValuesHolder.java:-1)   at android.animation.PropertyValuesHolder.access$400(PropertyValuesHolder.java:37)   at android.animation.PropertyValuesHolder$FloatPropertyValuesHolder.setAnimatedValue(PropertyValuesHolder.java:1296)   at android.animation.ObjectAnimator.animateValue(ObjectAnimator.java:981)   at android.animation.ValueAnimator.setCurrentFraction(ValueAnimator.java:642)   at android.animation.ValueAnimator.setCurrentPlayTime(ValueAnimator.java:589)   at android.animation.ValueAnimator.start(ValueAnimator.java:1106)   at android.animation.ValueAnimator.start(ValueAnimator.java:1117)   at android.animation.ObjectAnimator.start(ObjectAnimator.java:852)   at android.animation.AnimatorSet.start(AnimatorSet.java:586)   at me.zhanghai.android.materialprogressbar.IndeterminateProgressDrawableBase.start   ... (IndeterminateProgressDrawableBase.java:45)   at me.zhanghai.android.materialprogressbar.IndeterminateProgressDrawable.start(IndeterminateProgressDrawable.java:19)   at android.widget.ProgressBar.drawTrack(ProgressBar.java:1713)   at android.widget.ProgressBar.onDraw(ProgressBar.java:1676)   at android.view.View.draw(View.java:16178)   at android.view.View.draw(View.java:16090)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16088)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16088)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16088)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16181)   at android.support.v4.widget.NestedScrollView.draw(NestedScrollView.java:1761)   at android.view.View.draw(View.java:16090)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1127)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16088)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16088)   at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3609)   at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:61)   at android.view.ViewGroup.drawChild(ViewGroup.java:3609)   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)   at android.view.View.draw(View.java:16181)

Use the following example layout (really pretty much any layout that includes the ProgressBar will throw the exception) and view the Preview tab in Android Studio 2.0+:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <me.zhanghai.android.materialprogressbar.MaterialProgressBar
        android:id="@android:id/progress"
        style="@style/Widget.MaterialProgressBar.ProgressBar.Large"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="false"/>

</FrameLayout>

Invalidating caches and restarting does not fix the problem.

When running the code on a device or emulator, the progress bar shows correctly and animates correctly. This is only a problem when rendering the Preview. The annoying thing is that not only does it not render, but it keeps all the other views from rendering in the preview. Hiding the view with tools:visibility="gone" won't stop it from crashing the whole preview render.

This occurs while using compile 'me.zhanghai.android.materialprogressbar:library:1.1.4'

@zhanghai
Copy link
Owner

Thank you for reporting this issue. I should use View.isInEditMode() for this. Will do it later.

@zhanghai zhanghai added the bug label Apr 11, 2016
@zhanghai zhanghai self-assigned this Apr 11, 2016
@zhanghai
Copy link
Owner

The sample is working properly in my Android Studio 2.0; Maybe it is because I've just updated my gradle plugin version. I'll publish a new version with updated dependencies now.

2016-04-12 14-49-47

@zhanghai
Copy link
Owner

Please try 1.1.6 version of this library; I cannot reproduce your exception due to #19 , but when viewed in the sample project of this project the preview is ok, so that issue should be a regression.

@jon-adams
Copy link
Author

Updating to v1.1.6 of the library fixed this rendering exception in Android Studio 2.0.

Thanks!

@jon-adams
Copy link
Author

Upon further investigation, maybe this issue isn't totally "fixed". I mean, the preview stopped breaking. (Though sometimes I had to invalidate the Android Studio cache and restart to get the exception to go away.)

However, I still see the following log message in the Warning level logcat output:

W/PropertyValuesHolder: Method set() with type float not found on target class class me.zhanghai.android.materialprogressbar.IndeterminateHorizontalProgressDrawable$RectTransformX

It looks like the same line of code the preview render exception was on? (Guessing, but similar classes and method names involved.)

Perhaps you may want to revisit that bit of code and see if the recent SDK or support library changed signatures underneath you? It's just an Android warning; the progress bar still shows and animates. But you may want to look at it, since I didn't test it across all the device levels we support.

@jon-adams jon-adams reopened this Apr 12, 2016
@zhanghai
Copy link
Owner

This is #10 ; I did not find out the reason, but it works normally. You can reopen that issue if you really want that one fixed.But it doesn't seem be related to this issue (because if so it shouldn't be introduced by updating Android Studio and fixed by updating gradle plugin.).

@squeeish
Copy link

squeeish commented May 25, 2016

Still having this issue in Android Studio 2.1.1

`
java.lang.IllegalArgumentException: object is not an instance of declaring class   at java.lang.reflect.Method.invoke(Method.java:483)   at

lines removed for brevity

me.zhanghai.android.materialprogressbar.IndeterminateProgressDrawableBase.stop   ... (IndeterminateProgressDrawableBase.java:65)   at me.zhanghai.android.materialprogressbar.IndeterminateProgressDrawable.stop(IndeterminateProgressDrawable.java:18)   

lines removed for brevity
`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants