2011-05-09 25 views
8

私はこのようなトグルボタンを定義している:トグルボタンの状態をプログラムで変更するにはどうすればよいですか?

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

そして私はプログラム的にその状態を変更したいです。私はsetCheckedtoggleメソッドを使ってみましたが、どちらも私の状況では動作しません。

私は進行中の通知を受けており、自分のアクティビティが通知の意図を受け取ったときに トグルボタンはチェックされていないが動作していないはずです。

私は活動のonResume上でこれをやっています。コードは実行されていますが、ToggleButtonの状態は変更されません。

奇妙なことに、アクティビティのonCreatesetChecked(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

それは動作するはずです。あなたはfalseに設定した後に実行されるコードのどこかsetChecked(true)への呼び出しを持っていない

チェック。おそらくOnCheckedChangeListenerの中に?

+0

を終える使用について

詳細しかし、それはしません。私はsetCheckedを呼び出す必要はありません。すべてのコードを検索するだけです。 – Franco

1

コール完了あなたの活動が行われ、閉じる必要があります。 ActivityResultはonActivityResult()であなたを起動した人に伝播します。代わりに、それはバックのonCreate()またはonPauseかもしれその呼び出し元のメソッドに行くトグルボタンの状態を変更する、あなたのケースでそう

...私はそれが必要知っているhere.....

関連する問題