我有一个Android库LabelledSpinner
,它本质上是一个复合视图,其中Spinner
包含TextView
个,全部位于LinearLayout
。
然而,当我在Android 4设备上运行应用程序时(我的库支持Android 4向上),我收到以下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{MyActivity}: android.view.InflateException: Binary XML file line #98: Error inflating class com.farbod.labelledspinner.LabelledSpinner
...
Caused by: java.lang.NoSuchMethodError: android.widget.LinearLayout.<init>
at com.farbod.labelledspinner.LabelledSpinner.<init>(LabelledSpinner.java:117)
at com.farbod.labelledspinner.LabelledSpinner.<init>(LabelledSpinner.java:112)
at com.farbod.labelledspinner.LabelledSpinner.<init>(LabelledSpinner.java:108)
...
我图书馆的用户遇到the same issue。
以下是我的构造函数(您还可以查看整个文件on the GitHub repository) - 请注意此文件extends LinearLayout
:
public LabelledSpinner(Context context) {
this(context, null);
}
public LabelledSpinner(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LabelledSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initializeLayout(context, attrs);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public LabelledSpinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
initializeLayout(context, attrs);
}
我认为错误指向第三个构造函数(错误中的行引用对我来说并不完全清楚)。
我觉得很奇怪,我收到了这个错误,因为查看LinearLayout
类,我正在使用的构造函数可用:
public LinearLayout(Context context) {...}
public LinearLayout(Context context, @Nullable AttributeSet attrs) {...}
public LinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {...}
public LinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
...
}
我在Android Lollipop设备上没有遇到此问题。
答案 0 :(得分:1)
事实证明,在我的情况下,我的应用程序使用的是过时的库版本(具体来说,我没有将更新从我的库推送到Bintray)。