1

コードにチェックボックスがあり、チェックされている場合、ユーザーはチェックボックスをオフにすることはできません。これが、チェックボックスにonCheckedChangeListenerを実装することにした理由です。

チェックしてクリックすると確認が求められ、そうでない場合は確認が求められません。(ダイアログを介して)確認を求められ、ユーザーがキャンセルした場合、チェックボックスはオンのままにする(または再度設定する)必要があります。そこで、キャンセルボタンをクリックして「CheckBox.setChecked(true)」を実装すると、確認が2回求められます。これを取り除く方法がわかりません。

関連するコードは次のとおりです。

    mEventAttendingCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {      
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                //do nothing
            } else {
                Context mContext = EventSingleViewActivity.this;
                final Dialog dialog = new Dialog(mContext);

                dialog.setCancelable(true);

                Button confirmButton = (Button) dialog.findViewById(R.id.confirmButton);    
                confirmButton.setOnClickListener(new View.OnClickListener() { 
                    @Override
                    public void onClick(View v){ 
                        //do something
                    }
                });


                Button cancelButton = (Button) dialog.findViewById(R.id.cancelButton);  
                cancelButton.setOnClickListener(new View.OnClickListener() { 
                    @Override
                    public void onClick(View v) { 
                        dialog.dismiss();
                        mEventAttendingCheckBox.setChecked(true);
                    }
                });


                dialog.show();

            }
        }
    });
4

2 に答える 2

7

on CLickは、ユーザーがクリックしたときにのみ呼び出されるため、 on ..を実装します。ただし、コードでCLickListener instead of onCheckChanged言った場合でもOnCheckChangedが呼び出されます。setChecked()

于 2012-04-26T06:15:24.330 に答える
0

同じコードをboolean flag= false

あなたの他の状態チェックでは、

if(flag == false)
 // open dialog
else
 // just uncheck button

最初に確認ボタンのonClickを設定してflag = trueから、チェックボックスをオフにします。最初にキャンセルボタンのonClickを設定してflag = falseから、チェックボックスをオンにします。

于 2012-04-26T06:33:31.567 に答える