Java Android Studio和gradle版本升级后奇怪的布局膨胀崩溃
我最近升级了我的Android Studio和Gradle版本(具体版本和上下文见下文)。升级后,应用程序立即开始崩溃(100%的时间),同时尝试使用以下根本原因扩大布局:Java Android Studio和gradle版本升级后奇怪的布局膨胀崩溃,java,android,gradle,android-gradle-plugin,android-studio-3.0,Java,Android,Gradle,Android Gradle Plugin,Android Studio 3.0,我最近升级了我的Android Studio和Gradle版本(具体版本和上下文见下文)。升级后,应用程序立即开始崩溃(100%的时间),同时尝试使用以下根本原因扩大布局: Caused by: java.lang.NumberFormatException: For input string: "3.5" at java.lang.Integer.parseInt(Integer.java:608) at com.android.internal.util.XmlUtils.
Caused by: java.lang.NumberFormatException: For input string: "3.5"
at java.lang.Integer.parseInt(Integer.java:608)
at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:133)
at android.content.res.TypedArray.getInt(TypedArray.java:375)
at com.nirhart.parallaxscroll.views.ParallaxScrollView.init(ParallaxScrollView.java:45)
at com.nirhart.parallaxscroll.views.ParallaxScrollView.<init>(ParallaxScrollView.java:28)
at net.chinookbook.android.widget.CBParallaxScrollView.<init>(CBParallaxScrollView.java:19)
ParallaxScrollView.init()方法如下:
protected void init(Context context, AttributeSet attrs) {
TypedArray typeArray = context.obtainStyledAttributes(attrs, R.styleable.ParallaxScroll);
this.parallaxFactor = typeArray.getFloat(R.styleable.ParallaxScroll_parallax_factor, DEFAULT_PARALLAX_FACTOR);
this.alphaFactor = typeArray.getFloat(R.styleable.ParallaxScroll_alpha_factor, DEFAULT_ALPHA_FACTOR);
this.innerParallaxFactor = typeArray.getFloat(R.styleable.ParallaxScroll_inner_parallax_factor, DEFAULT_INNER_PARALLAX_FACTOR);
this.numOfParallaxViews = typeArray.getInt(R.styleable.ParallaxScroll_parallax_views_num, DEFAULT_PARALLAX_VIEWS);
typeArray.recycle();
}
现在,对于调试代码时观察到的奇怪部分:在第行停止调试器:
typeArray.getFloat(R.styleable.ParallaxScroll_parallax_factor, DEFAULT_PARALLAX_FACTOR);
我可以看到该方法即将被这样调用(这是调试器计算的结果)-这看起来是正确的:typeArray.getFloat(3,1.9F)。但后来我介入了这个方法
public float getFloat(@StyleableRes int index, float defValue)
public int getInt(@StyleableRes int index, int defValue)
令我惊讶的是,index=0和defValue=1.9。应用程序不会在此崩溃,它会在以下行崩溃:
typeArray.getInt(R.styleable.ParallaxScroll_parallax_views_num, DEFAULT_PARALLAX_VIEWS)
应该使用typeArray.getInt(4,1)调用它,但是当我在方法中单步执行时
public float getFloat(@StyleableRes int index, float defValue)
public int getInt(@StyleableRes int index, int defValue)
同样,令我惊讶的是,参数值是index=3和defValue=1。这一次,应用程序将崩溃,因为索引为3的可设置样式的资源是视差因子,定义为3.5,不能作为int读取
所以,我的问题是,一个方法如何看起来像是用一些(主要)值调用,然后实际用其他值调用。我错过了什么注意:视差CrollView是从外部库导入的
=============================================================环境: Android Studio:3.1.2
渐变:3.1.2(从2.3.3升级)
渐变包装器:4.4(从3.3升级) 编译DKversion27
buildToolsVersion27.0.3
minSdkVersion16
targetSdkVersion27
多索引已启用true
com.android.support:multidex:1.0.3(从1.0.1升级)
nirhart:parallaxscroll:1.0
public int getInt(@StyleableRes int index, int defValue)