2011-05-09 63 views
8

我有这样定义一个切换按钮:如何以编程方式更改ToggleButton状态?

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

我要编程上改变其状态。我尝试使用setCheckedtoggle方法,但这两种方法都不适用于我的情况。

我有一个正在进行的通知,当我的活动收到通知意图时, 切换按钮应设置为未检查,但它不起作用。

我在活动的onResume上这样做。代码正在执行,但ToggleButton的状态不会改变。

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

谢谢。

回答

15

明白了。有点。

我有这个

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

     Intent intent; 

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

      toggle.setChecked(false); 

      finish(); 
     } 
    } 

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

有人照顾解释?

0

它应该工作。

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

+0

所以你的情况相反,改变它可以追溯到它的调用方法可能是的onCreate(),或在onPause切换按钮的状态......

细节我知道它应该,但事实并非如此。我没有任何其他的'setChecked'调用,只是搜索所有的代码。 – Franco 2011-05-09 21:54:49

1

时拨打电话活动完成,应关闭完成。 ActivityResult会传播给通过onActivityResult()启动的任何人。有关使用完成here.....

相关问题