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
では変更されません。何が足りないのですか?
ありがとう。
とった。やや。
私はこれを持っていました
protected void onResume() {
super.onResume();
Intent intent;
if ((intent = getIntent()) != null && MainActivity.STOP.equals(intent.getAction())) {
disable();
toggle.setChecked(false);
finish();
}
}
しかし、finish
の呼び出しは実際には何もしていませんでした。私はそれを削除しました、そして今それは働きます。これがそれを修正した理由の手がかりではありません。
誰かが説明したいですか?
アクティビティが完了し、終了する必要がある場合は、Finishに電話してください。 ActivityResultは、onActivityResult()を介して起動したユーザーに伝播されます。
したがって、あなたの場合、トグルボタンの状態を変更する代わりに、onCreate()またはonPause ...などの呼び出しメソッドに戻ります。
フィニッシュの使用に関する詳細 ここ.....
私は同じ問題を抱えていました。状態を設定する前にToggleButton#isChecked()メソッドを呼び出すことで修正しました。
if (mToggleSwitch.isChecked()) {
mToggleSwitch.setChecked(false);
}
動作するはずです。
Falseに設定した後に実行されるコード内のどこかにsetChecked(true)
の呼び出しがないことを確認してください。おそらくOnCheckedChangeListener
の中に?