我有一个像这样定义的ToggleButton:
<ToggleButton android:text="ToggleButton" android:id="@+id/toggle"
android:layout_height="wrap_content" android:layout_width="fill_parent"></ToggleButton>
我想以编程方式更改其状态。我尝试使用setChecked
和toggle
方法,但这两种方法都不适用于我的情况。
我有一个持续的通知,当我的活动收到通知意图时, 切换按钮应设置为不选中,但不起作用。
我在活动的onResume
上执行此操作。代码正在执行,但ToggleButton的状态不会改变。
奇怪的是,如果我在活动的setChecked(false)
上调用onCreate
,它会更改按钮的状态,但不会更改onResume
。我错过了什么?
感谢。
答案 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);
}