onCheckChanged をトリガーせずにチェックボックスの値を変更する 質問する

onCheckChanged をトリガーせずにチェックボックスの値を変更する 質問する

私はsetOnCheckedChangeListener自分のために実装しましたcheckbox

電話する方法はありますか?

checkbox.setChecked(false);

引き起こすことなくonCheckedChanged

ベストアンサー1

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

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

を参照してくださいCheckBoxのソース、および以下の実装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;            
    }
}

おすすめ記事