当滑动开关时,切换onclick不被调用

时间:2014-11-25 19:56:39

标签: android

我几乎逐字地复制了来自here的代码。我得到的是this

当我快速点击滑块时,它会工作,即当我轻轻点击它时,我得到了预期的结果。然而,当我用手指向下滑动它从左到右时,没有任何反应。滑块进入ON状态,但从不调用LocationClicked。我无法找到" onSlide"方法,所以我不知道该怎么做。

我是否必须使用侦听器或者是否有更简单的方法?

XML文件的一部分:

<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/location_setting_string"
android:onClick="LocationClicked" />

部分Java代码:

public void LocationClicked(View view) {
Log.i(TAG,"CLICK");
}

我在Galaxy S5上运行4.4.2。

1 个答案:

答案 0 :(得分:4)

我轻轻点击,我得到了预期的结果

在这种情况下会触发onToggleClicked事件。

然而,当我用手指向下滑动它时,没有任何反应。

这是因为幻灯片手势不会触发OnToggleClicked事件。 (你没有点击它)

要抓住两者,你可以使用

toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            // The toggle is enabled
        } else {
            // The toggle is disabled
        }
    }
});

只要切换状态发生变化,就会触发。如果你点击它或滑动它并不重要,状态会发生任何变化。