android - 从按钮继承 onClick 属性
问题描述
我正在从 a 构建自定义视图Button
,并且我想继承onClick
XML 上的属性。我检查了View
源代码并试图复制它,但它使用 private class AppCompatViewInflater.DeclaredOnClickListener
。
case R.styleable.View_onClick:
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) {
setOnClickListener(new DeclaredOnClickListener(this, handlerName));
}
break;
我觉得应该有一种更简单的方法可以做到这一点,而无需进入这个兔子洞。
我目前收到此错误:
<com.domain.SomeButton
<!---Other stuff-->
android:onClick="@{() -> viewmodel.doSomething()}" />
Cannot assign callback expression to 'android:onClick'
Make sure you aren't using lambda syntax if the expression should only return a value directly
有类似这样的相关问题,但它们没有答案且陈旧。
谢谢!
解决方案
正如评论中所讨论的,android:onClick
不依赖于Button
或特定的View
. 任何View
默认情况下都有它。我的问题是它与其他东西发生冲突。
这是我的Button
实现:
class SomeButton() : Button, View.OnClickListener {
// Constructors ignored
override fun onClick(v: View) {
// Code
}
}
这override fun onClick
干扰了android:onClick
XML 属性。删除它可以解决问题,但使用android:onClickListener
也可以。
推荐阅读
- algorithm - 计算递归关系的时间复杂度 f(n) = f(n/2) + f(n/3)
- mariadb - “总连接数”太多。是正常状态吗?MaxScale 2.3.9
- python - 如何在python中使用标准分割字符串数据?
- php - 如何在我的数据库中存储 $_SESSION 值
- opencv - OpenCV基于红色和绿色标记分离图像的背景和前景
- html - 我的字体很小,但我的突出显示大小很大?
- kubernetes - 在我的 VPC 中启用私有访问时无法访问 EKS 终端节点
- clojure - 在 Clojure 中迭代地图
- r - 森伯斯特图 - 生成超过 2 个环时出错
- unity3d - PlayMode 中的 Unity3D 测试运行程序不提供测试反馈