如何以编程方式更改ToggleButton状态?

时间:2011-05-09 21:44:32

标签: android android-ui togglebutton

我有一个像这样定义的ToggleButton:

<ToggleButton android:text="ToggleButton" android:id="@+id/toggle"
    android:layout_height="wrap_content" android:layout_width="fill_parent"></ToggleButton>

我想以编程方式更改其状态。我尝试使用setCheckedtoggle方法,但这两种方法都不适用于我的情况。

我有一个持续的通知,当我的活动收到通知意图时, 切换按钮应设置为不选中,但不起作用。

我在活动的onResume上执行此操作。代码正在执行,但ToggleButton的状态不会改变。

奇怪的是,如果我在活动的setChecked(false)上调用onCreate,它会更改按钮的状态,但不会更改onResume。我错过了什么?

感谢。

4 个答案:

答案 0 :(得分:15)

知道了。那种。

我有这个

    protected void onResume() {
        super.onResume();

        Intent intent;

        if ((intent = getIntent()) != null && MainActivity.STOP.equals(intent.getAction())) {
            disable();

            toggle.setChecked(false);

            finish();
        }
    }

但是对finish的调用实际上并没有做任何事情。我删除它,现在它的工作原理。不知道为什么修复它。

有人在意解释?

答案 1 :(得分:1)

当您的活动完成后调用完成,应该关闭。 ActivityResult会传播回通过onActivityResult()启动您的人。

所以在你的情况下,它不是改变切换按钮状态而是返回其调用方法,该方法可能是onCreate()或onPause ...

有关使用完成here.....

的详细信息

答案 2 :(得分:0)

它应该工作。

检查在将其设置为false后执行的代码中的其他位置没有调用setChecked(true)。也许在OnCheckedChangeListener内?

答案 3 :(得分:0)

我遇到了同样的问题。我通过在设置状态之前调用ToggleButton#isChecked()方法来解决此问题。

if (mToggleSwitch.isChecked()) {
    mToggleSwitch.setChecked(false);
}