我创建了一个复合视图,其中包含一个TextView
和一个“购买”Button
。
对于我的复合视图,我创建了一个名为onBuyClick
的自定义属性。它应该与View
的{{1}}属性具有相同的目的,但是监听器不在整个视图上,而只在按钮上。所以,我做的第一件事是从onClick
类复制View
属性的作用。它奏效了! (略有改编)。
但是一旦我添加onClick
,它就无法找到我希望它获取的方法并抛出btnBuy.setOnClickListener(new OnClickListener() {
(第二个,其中IllegalStateException
正在捕获)。
以下是NoSuchMethodException
属性后执行的作品:
onBuyClick
以下是此部分之外定义的变量:if (context.isRestricted()) {
throw new IllegalStateException("The android:onClick attribute cannot "
+ "be used within a restricted context");
}
final String handlerName = a.getString(attr);
if (handlerName != null) {
btnBuy.setOnClickListener(new OnClickListener() { //As soon as "btnBuy." is added, everything crashes once the button is pressed.
private Method mHandler;
public void onClick(View v) {
if (mHandler == null) {
try {
mHandler = getContext().getClass().getMethod(handlerName,
View.class);
} catch (NoSuchMethodException e) {
int id = getId();
String idText = id == NO_ID ? "" : " with id '"
+ getContext().getResources().getResourceEntryName(
id) + "'";
throw new IllegalStateException("Could not find a method " +
handlerName + "(View) in the activity "
+ getContext().getClass() + " for onClick handler"
+ " on view " + this.getClass() + idText, e);
}
}
try {
mHandler.invoke(getContext(), this);
} catch (IllegalAccessException e) {
throw new IllegalStateException("Could not execute non "
+ "public method of the activity", e);
} catch (InvocationTargetException e) {
throw new IllegalStateException("Could not execute "
+ "method of the activity", e);
}
}
});
}
,复合视图中的“购买”btnBuy
,Button
是包含所有属性的a
有人可以帮帮我吗?