1. ホーム
  2. android

[解決済み] チェックボックスの値をonCheckChangedをトリガーにせずに変更する

2022-04-21 15:54:51

質問

私は setOnCheckedChangeListener を実装しています。 checkbox

を呼び出す方法はありますか?

checkbox.setChecked(false);

をトリガーすることなく onCheckedChanged

どのように解決するのですか?

いいえ、できません。その onCheckedChanged メソッドから直接呼び出されます。 setChecked . できることは以下の通りです。

mCheck.setOnCheckedChangeListener (null);
mCheck.setChecked (false);
mCheck.setOnCheckedChangeListener (mListener);

をご覧ください。 チェックボックスのソース の実装と setChecked :

public void  setChecked(boolean checked) {
    if (mChecked != checked) {
        mChecked = checked;
        refreshDrawableState();

        // Avoid infinite recursions if setChecked() is called from a listener
        if (mBroadcasting) {
            return;
        }

        mBroadcasting = true;
        if (mOnCheckedChangeListener != null) {
            mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
        }

        if (mOnCheckedChangeWidgetListener != null) {
            mOnCheckedChangeWidgetListener.onCheckedChanged(this, mChecked);
        }

        mBroadcasting = false;            
    }
}