我有自定义小部件
<com.example.MyWidget
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
custom:key="242"
android:layout_height="wrap_content"/>
它在jar库中声明。 我在主应用程序中有attrs.xml
<declare-styleable name="MyWidget">
<attr name="key" format="string"/>
</declare-styleable>
我必须在MyWidget类中获得该值。
我尝试在MyWidget的构造函数中执行此操作:
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyWidget);
try {
myKey = a.getString(R.styleable.MyWidget_key);
}
finally {
a.recycle();
}
但是R $ styleable的NoClassDefFoundException 我做错了什么?
答案 0 :(得分:1)
R.styleable.MyWidget
不在你的jar中,所以它总是会返回NoClassDefFoundException
。
你必须得到属性:
for (int i = 0; i < attrs.getAttributeCount(); i++){
if (attrs.getAttributeName(i).equals("key")){
myKey = attrs.getAttributeValue(i));
}
}