java - 如何在我的自定义类中处理 onClick 或 onTouch 事件?
问题描述
我有一个自定义类 MyFloatingButton 什么都不继承。我想在其中处理 onClick 或 onTouch 事件。怎么做?构造函数接收来自活动的上下文、活动和视图:
public MyFloatingButton(Context context, RootActivity activity, View view) {
this.context = context;
this.activity = activity;
this.activityView = view;
getViews();
initCircleSelector();
}
private void getViews() {
floatingActionButton = (FloatingActionButton) activityView.findViewById(R.id.btn_publish);
circle_selector = (FrameLayout) activityView.findViewById(R.id.circle_selector);
selector_text = (LinearLayout) activityView.findViewById(R.id.selector_text_div);
shade_cover = (FrameLayout) activityView.findViewById(R.id.shade_cover);
}
我尝试在 MyFloatingButton 类中做同样的事情,因为它是一个 Activity。但它没有用。
解决方案
一种方法是实现一个单击侦听器,然后在构造函数中将其设置为 View。
例子:
public MyFloatingButton implements View.OnClickListener {
public MyFloatingButton(Context context, RootActivity activity, View view) {
this.context = context;
this.activity = activity;
this.activityView = view;
getViews();
initCircleSelector();
activityView.setOnClickListener(this);
}
@Override
public void onClick(View v){
// handle click event
}
.....
}
对 OnTouch 执行相同操作
推荐阅读
- javascript - Nodejs / ExpressJs - 发出并行 api 请求以执行同步/异步作业
- amazon-web-services - AWS Fargate 的最大运行时间为 120 秒?
- python-3.x - 两个独立源的多线程问题
- php - PHP 8.0.8 + Laravel 8.4 全新安装子 1035 在信号 11 上退出(SIGSEGV - 核心转储)
- list - ValueError: list.remove(x): x不在列表中(为什么会发生?)
- spring-boot - 在 Lambda 和 sprintboot 影子 jar 中获取 NoSuchBeanDefinitionException
- python - django 如何在管理面板中禁用和启用电子邮件验证
- snowflake-cloud-data-platform - 三密安全:持有不同云提供商的密钥
- entity-framework-core - Blazor 和 EF Core:如何更新复杂对象
- python-3.x - 如何使用 python-sonarqube-api 启动项目扫描