如何以编程方式更改 ToggleButton 状态?
我有一个这样定义的 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 上调用。我缺少什么?
谢谢。
I have a ToggleButton defined like this:
<ToggleButton android:text="ToggleButton" android:id="@+id/toggle"
android:layout_height="wrap_content" android:layout_width="fill_parent"></ToggleButton>
And I want to change its state programmatically. I tried using the setChecked
and toggle
methods, but neither of those works in my situation.
I have an ongoing notification and when my activity receives the notification intent, the
toggle button should be set to not checked, but it's not working.
I'm doing this on the activity's onResume
. The code is being executed but the ToggleButton's state doesn't change.
Weirdly, if I call setChecked(false)
on the activity's onCreate
it does changes the button's state, but not on onResume
. What am I missing?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
知道了。有点儿。
我有这个
但是对
finish
的调用实际上没有做任何事情。我删除了它,现在它可以工作了。不知道为什么会解决这个问题。有人愿意解释一下吗?
Got it. Kind of.
I had this
But the call to
finish
wasn't actually doing anything. I removed it and now it works. Not a clue why this fixed it.Someone care to explain?
它应该有效。
检查在将其设置为 false 后执行的代码中的其他位置是否没有调用
setChecked(true)
。也许在OnCheckedChangeListener
内?It should work.
Check that you don't have a call to
setChecked(true)
somewhere else in the code that is executed after you set it to false. Perhaps inside anOnCheckedChangeListener
?当您的活动完成并应该关闭时,调用“完成”。 ActivityResult 将传播回通过 onActivityResult() 启动您的任何人。
因此,在您的情况下,它不会更改切换按钮状态,而是返回到其调用方法,该方法可能是 onCreate() 或 onPause...
有关使用 finish 这里......
Call Finish when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
So in your case Instead of changing the toggle Button state it goes back to its calling method which may be the onCreate() or onPause...
Details about using finish here.....
我也有同样的问题。我通过在设置状态之前调用 ToggleButton#isChecked() 方法修复了它。
I was having the same issue. I fixed it by calling ToggleButton#isChecked() method before setting the state.