繁体   English   中英

Android-具有自己的OnClickListener的toggleButton延迟

[英]Android - toggleButton delay with own OnClickListener

使用自己的OnClickListener单击toggleButton后,我遇到不必要的延迟问题。 我通过关于stackoverflow的建议使我的听众如下所示:

public class ToggleButtonOnClickListener implements OnClickListener{

    private String _name;

    public ToggleButtonOnClickListener(String name) {
        _name = name;
    }

    @Override
    public void onClick(View v) {
        Log.i("toggle button clicked",_name);
    }
}

并使用这个:

toggle.setOnClickListener(new ToggleButtonOnClickListener(device.GetName()));

但是,它不会在第一次单击后触发onClick方法,而是在下一个触发后。 而且因为我有一个toggleButtons组,这让我非常不高兴,所以当我第一次单击时,onClick方法在再次单击后甚至从该组单击到第二个(或任意一个)后都会触发。 OnCheckChangeListener的行为相同。

请参考开发人员的示例

您可以实现以下内容:

 public void onToggleClicked(View view) {
    // Is the toggle on?
    boolean on = ((ToggleButton) view).isChecked();

    if (on) {
        // Enable vibrate
    } else {
        // Disable vibrate
    }
}

在查找错误并测试了其他选项之后,我发现延迟不是引起监听器,而是导致log语句。
因此,除了

Log.i("toggle button clicked",_name);

一个不需要的替代方法是使用OnCheckedChangeListener拥有自己的类(参数):

toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        Toast.makeText(buttonView.getContext(), "test", Toast.LENGTH_LONG).show();
    }
});

我不知道为什么要使用此Log,但是我仅将它们用于调试,因此问题得以解决!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM