gpt4 book ai didi

android - 如何在用户未更新状态时跳过 switch.setOnCheckedChangeListener

转载 作者:太空狗 更新时间:2023-10-29 16:36:35 26 4
gpt4 key购买 nike

因为我是第一次尝试切换(Android 新手),所以我不确定如何处理这个问题。我有一个 Activity 开关和一个附加的 setOnCheckedChangeListener() 到它。当调用 Activity 的 oncreate 时,我对数据库进行异步调用,并根据收到的值设置开关的开/关状态。现在的问题是,但是我将开关状态设置为仅显示其在 db 上的当前状态,并且还没有用户更改它,仍然调用了 listner 函数。我知道代码工作正常,但随着状态更改的监听器,我需要其他东西来确认状态已被用户更改。我认为 onTouchEvent(MotionEvent event) 可以达到目的,但不知道如何与 switch.setOnCheckedChangeListener 结合使用

有没有人知道更好的解决方案或者至少可以帮助我告诉我如何使用 ontouch 即使是 listner ...

sw_recording_switch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}}

谢谢!!!

最佳答案

确实在调用 Switch.setChecked(boolean) 时; OnCheckedChangeListener 也将被触发。我克服这个问题的方法是在调用 setChecked() 之前使用一个标志并将其设置为 false

这样,当您以编程方式使用 setChecked() 时,监听器仍会被调用,但内部代码不会执行,除非用户按下开关。

    //prevent the code from listener to run, flag set to false before calling setChecked(true);
should_run = false;
toggle_facebook.setChecked(true);

....

private OnCheckedChangeListener onSwitchSlided = new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
switch(buttonView.getId())
{
case R.id.settings_toggle_facebook:
{
if(true == should_run)
{
//do stuff
}

should_run = true;
break;
}
case R.id.settings_toggle_twitter:
{
if(true == should_run)
{
//do stuff
}

should_run = true;
break;
}
}
}
};

关于android - 如何在用户未更新状态时跳过 switch.setOnCheckedChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301608/

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