【问题标题】:How to change ToggleButton state programmatically?如何以编程方式更改 ToggleButton 状态?
【发布时间】:2011-08-22 00:29:33
【问题描述】:

我有一个这样定义的 ToggleButton:

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

我想以编程方式更改其状态。我尝试使用 setChecked 和 toggle 方法,但在我的情况下这两种方法都不起作用。

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

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

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

谢谢。

【问题讨论】:

    标签: android android-ui togglebutton


    【解决方案1】:

    知道了。有点。

    我有这个

        protected void onResume() {
            super.onResume();
    
            Intent intent;
    
            if ((intent = getIntent()) != null && MainActivity.STOP.equals(intent.getAction())) {
                disable();
    
                toggle.setChecked(false);
    
                finish();
            }
        }
    

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

    有人愿意解释一下吗?

    【讨论】:

      【解决方案2】:

      它应该工作。

      检查您在将其设置为 false 后执行的代码中是否没有调用 setChecked(true)。也许在OnCheckedChangeListener 里面?

      【讨论】:

      • 我知道应该,但事实并非如此。我没有给setChecked打任何其他电话,只是搜索了所有代码。
      【解决方案3】:

      当您的活动完成并应关闭时调用 Finish。 ActivityResult 被传播回通过 onActivityResult() 启动你的人。

      因此,在您的情况下,它不会更改切换按钮状态,而是返回其调用方法,可能是 onCreate() 或 onPause...

      关于使用finishhere.....的详细信息

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-25
          • 1970-01-01
          • 1970-01-01
          • 2021-12-06
          相关资源
          最近更新 更多