gpt4 book ai didi

java - 如何将 CheckedChange Listener 传递给自定义 View

转载 作者:行者123 更新时间:2023-12-01 18:26:09 24 4
gpt4 key购买 nike

我制作了一个带有 3 个切换按钮的自定义 View 。在我设置的自定义 View 类中

public void setMyToggleButton1OnCheckedChangedListener(CompoundButton.OnCheckedChangeListener o) {
myToggleButton1.setOnCheckedChangeListener(o);
}

但是当我尝试在我的主要 Activity 中处理这个问题时,看起来这个事件从未被触发。在我尝试的主要 Activity 中

myCustomView.setMyToggleButton1OnCheckedChangedListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//TODO something here
}
else {
//TODO something here
}
}
});

我确实尝试了使用常规按钮的其他自定义 View ,并使用相同的方法将标准按钮单击事件传递给它。我不明白将标准按钮单击事件传递到自定义 View 和将切换按钮 checkchange 事件监听器传递到自定义 View 有何不同。

PS:这是我对常规按钮及其 OnClickListener 所做的操作。这个按照我的预期工作,这就是为什么我尝试将它复制到 Toggle Button 和 OnCheckedChangeListener。

在 myCustomView2 中(自定义 View 包含常规按钮)

public class myCustomView2 extends ConstraintLayout{
private Button myRegBtn1;
...
public myCustomView2(Context context) {
this(context, null);
}

public myCustomView2(Context context, AttributeSet attrs) {
this(context, attrs, 0);
setAttributes(context, attrs);
}

public myCustomView2(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setAttributes(context, attrs);
init(context);
}

private void init(Context context) {
myRegBtn = findViewById(R.id.btn1);
...
}

private void setAttributes(Context context, AttributeSet attrs) {
...
}

public void setMyRegBtnOnClickListener(OnClickListener o) {
myRegBtn.setOnClickListener(o);
}
}

在我的 mainActivity 中,

public class myMainActivity extends AppCompatActivity{
private MyCustomView2 myCustomView2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
...
myCustomView2.setMyRegBtnOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//TODO: some code execute here when button clicked
}
});
...
}

最佳答案

您需要自己调用 CheckedChangeListener

即lister.onCheckedChange(isChecked)

只有当您扩展 CheckBox View 时,它才能开箱即用。

关于java - 如何将 CheckedChange Listener 传递给自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60230546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com