android - 无法使用 setOnCheckedChange(onCheckedChange) 获得开关侦听器
问题描述
我在让开关按钮侦听器正常工作时遇到问题。这是我的主要活动:
public class MainActivity extends WearableActivity {
private Switch mySwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Enables Always-on
setAmbientEnabled();
// React to settings change
mySwitch= findViewById(R.id.mySwitch);
mySwitch.setOnCheckedChangeListener(this); // <--------
}
public void onCheckedChange(CompoundButton s, boolean isChecked) {
...
}
}
在箭头线上,我尝试了这个(就像互联网上的一个样本)。它在 Android Studio 中被标记为错误。AS 建议我转换为 CommpoundButton.onCheckedChange (或类似的)。当我启动应用程序时,它会崩溃说 MainActivity 不能被投射到那个。我也不能做 setOnCheckedChangeListener(onCheckedChange);
我做错了什么?
解决方案
如果您OnCheckedChangeListener
想this
用作setOnCheckedChangeListener()
.
public class MainActivity extends WearableActivity implements CompoundButton.OnCheckedChangeListener{
这是因为setOnCheckedChangeListener()
将只接受 的实例OnCheckedChangeListener
,因此您不能简单地使用this
,因为this
指向的 Activity 不是 的实例OnCheckedChangeListener
。
然而,由于OnCheckedChangeListener
是一个接口,这很容易通过实现来纠正OnCheckedChangeListener
。由于继承在 Java 中的工作方式,OnCheckedChangeListener
一旦实现了接口,Activity 就会自动成为一个实例。
看起来这是您想要的选项,因为您还覆盖了onCheckedChange()
Activity 中的方法。
推荐阅读
- swiftui - 带有 SwiftUI 的 Apple Watch 上列表项的背景
- ruby-on-rails - 木材:找不到命令“木材”
- angular - 基于 Angular 教程的 Visual Studio 代码调试不起作用
- rust - 如何使用包含返回对 Self 的引用的方法的 trait 对象?
- r - 一种用户将选择存储为输入以供以后使用的方法
- powershell - 使用正则表达式数组 (regex) 过滤文件列表
- html - 在 SQL 中创建 HTML 无序列表
- php - 在 PHP 中设置环境变量适用于一个用户,但不适用于另一个用户
- c# - AWS S3 获取对象部分元数据
- html - 文本未显示,背景颜色和文本颜色不同